Over the next 12 months, I’m going to learn the entire 4-year MIT curriculum for computer science, without taking any classes.

UPDATE: The MIT Challenge is now complete. I finished on September 26, 2012, just under 12 months after beginning October 1st, 2011. Click on “See More…” for any class to access my exams, official solutions or code I wrote. Answers to some common questions: How much did I work during the challenge? In the beginning roughly 60 hours/week. Later more like 35. Did you get a degree from MIT? No. See the talk above for my motivation to do the entire education without credit. Did you do everything an MIT student does? No. I did the exams and programming projects for a curriculum that is very similar to MIT’s own (I had to swap some lab classes and humanities requirements for other classes). The number of credit hours is the same though. Check here for MIT’s actual 4-year CS curriculum as a comparison to my own. (Note: This link has been updated as the old one was dead, however I haven’t checked whether there were changes made to the CS curriculum since I did the MIT Challenge) Did you use textbooks or lecture videos? Everything is in the “See More…” pane for each class. Please check it out if you’re unsure for each class. What order did you do the classes in? In the order listed below. Except some were taken at the same time. However if you followed this order serially you wouldn’t miss any prerequisites. Did you grade the work yourself? Yes. Admittedly, this introduces some degree of error over having a professor grade my work. However, most of the exams are quantitative with solution sets that have grading rubrics, so it limits the error somewhat. I encourage anyone to check out my actual exam results and compare them against the solutions. In many of the exams that had lengthy calculations required, I allowed for part marks provided the concepts taught in the course were applied correctly. I believe the provided grading is arguably a fair one, but if you wanted to take the strong position that any mistake (such as forgetting to carry a minus sign) invalidates an entire question, this would reduce some of my grades. I’ve gone through and recalculated under these more severe restrictions and it would put the final exams for 18.01, 5.111, 18.03, 6.002 and 6.013 below the passing threshold (the other 28 classes were either unaffected or stayed above passing). I believe the original grading was fair, if imperfect, but these later calculations show the impact of my decision to use part marks. Do you believe everyone shouldn’t go to university and do this instead? Of course not. I did my undergrad in university and I don’t regret it. My goal for this project was to see if it would be possible–to push the expectations for how long, how costly and how conventionally an education must be obtained.

Computers have always fascinated me. From finance to Facebook, algorithms are the hidden language that underlies most of our life. The largest transformations of our world are being written in code, and advancements in artificial intelligence allow us to use computers to understand what it means to be human.

Beyond the poetry of the machine, computer science is also immensely practical. Fortunes have been made and revolutions sparked on lines of code.

I’ve always wanted to speak that language. But, I didn’t want to invest four years of my life and hundreds of thousands of dollars to learn it.

I’m embarking on this experiment because I want to show that learning doesn’t require acceptance boards and SAT tests, thousands of dollars in debt, or even the 4-year pace most students assume is necessary to learn a subject.

Will I fail? It’s definitely a possibility—people a lot smarter than myself struggle through immense workloads at institutions like MIT, and I’m attempting to learn the same material at 4x the speed, without the benefit of instructors.

All I can promise is to share what I find with you. Listed below are all 33 classes I’ll be covering. For each of them, I’ll write the final exam and you can compare my answers to the MIT official solutions. I’ll also post any failures, so you can be sure I’m not omitting my mistakes.

Post-MIT Challenge Update

Since the challenge was completed, I’m using this space to share some of the new courses I complete or programs I’ve finished related to computer science.

WordSmith – This is an AI I built that plays Scrabble. Free and open-source.

LEARNING PROGRESS (33/33):

Click to the titles to view videos, access the courses and see my results

FAQ for the MIT Challenge

Q) What rules are you following?

Because I’m not enrolled in MIT (or affiliated with them in any way) I’ve had to construct my own rules to make the challenge fair, yet feasible. The basic rules are simple:

I consider a class successfully completed if I can pass the final exam (which typically means getting a grade of at least 50% although I aim for much higher). I write the exam under the same constraints of a student: no looking at the questions or solutions beforehand, no notes or forbidden material, same time constraints (the default is 3 hours if not specified). I grade the papers myself, comparing them to the actual MIT solutions. I’ll post both, so anyone can double-check my grading methods.

Keep in mind these are only the minimum requirements of my challenge. For classes which have a significant programming component, I try to do representative programming assignments, to the extent that this is possible.

Q)Are you doing all the assignments, papers and projects?

For theory or math-based classes, final exams are generally a comprehensive basis of evaluation, so I’ll use those as my evaluation. I still end up doing most or parts of the assignments and quizzes as preparation, but since I can’t maintain consistency with this criteria over the entire challenge (many assignments are either unavailable or impossible to evaluate objectively) I’m doing them in an informal manner.

For classes with a significant amount of programming work or practical design problems, I’ll try to complete most the assignments. However, since these are harder to evaluate, I’m still relying on final exams as the major criterion for these classes.

Q) Does your curriculum differ from MIT’s?

I spent nearly a month trying to piece together the closest mirror of MIT’s actual computer science curriculum to follow. Unfortunately, I can’t do this perfectly since some classes are impossible to evaluate (including labs and research classes), and others didn’t have any access online.

I am taking the same number of credit hours as an actual MIT degree, so where I couldn’t take one class, I replaced it with a similar alternative. In terms of volume of knowledge to learn, therefore, my curriculum is similar to the one suggested by MIT to its students.

The only other exception with MIT has to do with electives. I’m taking various non-computer science classes, to best mimic the HASS requirements for MIT students. These aren’t a perfect match, as the online courseware for arts is considerably weaker than for sciences at MIT.

You can see the actual MIT curriculum for computer science here.

Q) What happens if you fail a class?

Given the pace I’m attempting, I think it’s inevitable that I’ll fail a class. My main requirement is that I pass a final exam, so if I fail one, I’m allowing myself to take a different exam after.

My strategy is to take a fail-first approach, to be more efficient with my time on classes where I have several final exams I can use as the basis of evaluation. This is very different from university where a failure can be a real setback. That’s a benefit of self-education over rigid formal institutions.

Q) Why are you doing this? Do you just love studying?

Nobody likes studying, but everyone wants to be smart. Learning, getting to those insights and feeling smarter about a subject are immensely rewarding. Too bad many of us have forgotten this after years of punitive formal education.

I’ll admit, I may be a bit crazy, or arrogant, for wanting to complete a 4-year program in only 12 months. However, my real motivation is to show people that learning faster is possible and that it can be more fun at the same time.

Q) Will you get a diploma for doing this?

No, and that’s exactly the point. Our society incorrectly equates knowledge with accreditation. Getting a piece of paper is great, and for many lines of work, it’s completely necessary. But the equation is made so strongly that people forget the two things are different.

I already have a career as a writer and small business owner. I never want to work for a large corporation, where HR might scrutinize over my lack of a diploma. For me, I just want to learn computer science in case I want to start a new business or work for a start-up.

I have nothing against college. University was an amazing and worthwhile experience for me, and it could be for you as well. All I hope is that by showing an alternative, people who feel the current system doesn’t work for them can find another path.

Q) Isn’t this just cramming for tests?

No, but the difference is subtle. Most the classes build on past concepts, so my goal with each is to develop a deep understanding that I can leverage. Cramming is typically a resort to memorization to quickly pass a test then forget it. Understanding is harder, but not necessarily more time consuming (and a requirement if each class builds on the one before it).

As an update, Since the first four classes, I’ve been proceeding 3-4 classes in parallel at a time. Although this involves reviewing over a much shorter time span than is typical (1 month instead of 1 semester), it increases the benefits of spaced repetition.

Ultimately, my ability to comprehend and perform adequately on higher level classes will be the test of my method, since most freshman classes serve primarily as grounding for more difficult senior classes.

Q) What kind of past experience do you have with the subject?

When I was still in high-school I did a fair bit of programming, mostly creating small computer games. In addition, I’ve taken 4 university-level computer science classes, when I attended the University of Manitoba for my business degree. Yes, I do have some prior experience with programming which will give me an advantage in the challenge. That being said, my prior level of skill isn’t probably far from many of the CS students actually attending MIT and for whom the curriculum is based.

In addition, I completed the first course 8.01 Classical Mechanics as a pilot experiment for this main challenge in July of 2011. Therefore the number of classes I’m attempting in the 12 month period is officially 32.

Q) I’m a blogger/reporter/journalist–how can I contact you to share the story?

You can contact me at challenge@scotthyoung.com or use the form here. I’m going to be fairly busy (for obvious reasons) so apologies in advance if it takes me awhile to get through my emails, as I usually go offline when I’m working through a course.