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
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+):
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.