Introduction
[Update: See also the follow-up post to this piece, An Intensive Bachelor's Level Computer Science Curriculum Program.]
A few months back we took an in-depth look at MIT’s free online Introduction to Computer Science course, and laid out a self-study time table to complete the class within four months, along with a companion post providing learning benchmarks to chart your progress. In the present article, I'll step back and take a much more broad look at com-sci course offerings available for free on the internet, in order to answer a deceptively straightforward question: is it possible to complete the equivalent of a college bachelor’s degree in computer science through college and university courses that are freely available online? And if so, how does one do so?
The former question is more difficult to answer than it may at first appear. There are, of course, tons of resources relating to computer science and engineering, computer programming, software engineering, etc. that can easily be found online with a few simple searches. However, despite this fact, it is very unlikely that you would find a free, basic computer science curriculum offered in one complete package from any given academic source. The reason for this is fairly obvious. Why pay $50, 000 a year to go to Harvard, for example, if you could take all the exact same courses online for free?Yet, this does not mean that all the necessary elements for such a curriculum are not freely accessible. Indeed, today there are undoubtedly more such resources available at the click of a button than any person could get through even in an entire lifetime of study. The problem is that organizing a series of random lecture courses you find on the internet into a coherent curriculum is actually rather difficult, especially when those courses are offered by different institutions for different reasons and for considerably different programs of study, and so on. Indeed, colleges themselves require massive advisory bureaucracies to help students navigate their way through complicated degree requirements, even though those programs already form a coherent curriculum and course of study. But, still, it’s not impossible to do it yourself, with a little bit of help perhaps.
The present article will therefore attempt to sketch out a generic bachelor’s level curriculum in computer science on the basis of program requirements distilled from a number of different computer science departments at top universities from around the country. I will then provide links to a set of specific college and university courses that are freely available online which, if taken together, would satisfy the requirements of our generic computer science curriculum.
A Hypothetical Curriculum
So, what are the requirements of our hypothetical computer science program? Despite overarching similarities, there are actually many differences between courses of study offered at different colleges and universities, especially in computer science. Some programs are more geared toward electrical engineering and robotics, others toward software development and programming, or toward computer architecture and hardware design, or mathematics and cryptography, or networking and applications, and on and on. Our curriculum will attempt to integrate courses that would be common to all such programs, while also providing a selection of electives that could function as an introduction to those various concentrations.