My 2015 MIT Computer Science Degree For Free

Recently, someone at work made a comment that has stuck with me for awhile. We were discussing some iOS apprenticeship I was planning on doing and he indicated that I don’t just like to learn but have an addiction to studying. I never thought about it quite like that but I had to agree that he was right. It is an addiction. In many ways though, with the changes in Computer Science, it is a great trait to possess in order to pursue perpetual learning. I think you absolutely need to love to learn in order to stay current in the industry.

It is with that in mind that I thought for 2015 I wanted to refresh my Computer Science knowledge, from the core, by taking the entire Junior and Senior year of courses from the MIT Undergraduate Bachelor of Science in Computer Science degree program which is all online on iTunes University and the MIT website thanks to the MIT Open Courseware. This includes video lectures, all the readings, and the same programming problem sets done by undergraduate MIT Computer Science majors. I could not think of a better way to become a better programmer.

MIT Open Courseware

MIT Open Courseware

In researching this self-study undertaking, as is eventually true with all things on the internet, I discovered someone else had already had this idea and executed it. This Canadian blogger named Scott Young, back in 2011, called it the MIT Challenge and set about to do all four years of an MIT undergraduate Computer Science program in one year. He even went so far as to present a TEDx talk on the topic.

Scott’s experiment, and the documentation he provided, were both very inspirational and helpful. But since my goal is not to do the entire undergraduate program, as he set out to do and accomplished, but to just do a refresher of my Computer Science undergraduate courses in order to upgrade my developer skills I have designed my challenge to include the following fifteen courses (versus his 30+):

No Course
1 6.01: Introduction to EE and CS I
2 6.02: Introduction to EE and CS II
3 6.042J: Mathematics for Computer Science
4 6.006: Introduction to Algorithms
5 18.01: Single Variable Calculus
6 18.06: Linear Algebra
7 6.041: Probabilistic Systems Analysis
8 6.046J: Design and Analysis of Algorithms
9 6.034: Artificial Intelligence
10 6.004: Computation Structures
11 6.033: Computer Systems Engineering
12 6.005: Elements of Software Construction
13 6.801: Machine Vision
14 6.837: Computer Graphics
15 6.045J: Automata, Computability, and Complexity

Each course is an undergraduate college course which is composed of anywhere from 13 to 40 video lectures depending on how many times a week the course met plus problem sets which is where the programming practice kicks-in. I can think of no better way to become a better developer than to go through the MIT CS undergraduate program. If I budget three weeks binging on one course (the lectures at 1.5x speed are fun) then I estimate I should be able to complete the above fifteen courses in 45 weeks. That leaves about seven weeks of wiggle room if I want to spend some more time on any one course and still complete the program in a year. I think a year is a good goal to set in order to box the project, set a target, and have an end date to march to.

I have created a github repository that I plan to use to both track my work and post my programming problem sets from each course. I look forward to the course of study and find it incredible that such resources are available for self-study.  All you need is a computer, an internet connection, and the motivation to do it. In my case being a learning junkie helps.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s