
#285 overall
6.046 Design and Analysis of Algorithms
MIT OCW
2 recommenders · 2 threads · recommended in 2 years, 2011–2013 · score 1.8
MIT OCW's undergraduate follow-on to 6.006, covering advanced algorithm design and analysis techniques; the commenters note it uses CLRS and covers about half the book alongside 6.006.
Commenters point to it as the natural next course after 6.006 for deeper algorithms material and for interview-relevant knowledge.
Algorithms & Data Structuresadvancedfreevideo lectures#algorithms#data structures#clrs#mit ocw#algorithm analysis
Recommendations by year
20062026
My experience with technical questions during interviews is that they did not need a deep understanding of any particular technology. Instead, they mostly rely on some knowledge of algorithms and data structures. Almost all of my coding questions came from the following classes I took at MIT: Intro to Algorithms (6.006) Design and Analysis of Algorithms (6.046) Mathematics for Computer Science (6.042)
Take some version of those classes (maybe OCW, edX, or Coursera) and you will be good to go — at least for technical interviews. If you like reading then Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein is the book that these courses cover.
Yes, it will still be taught using Python. Almost all of the undergraduate CS courses are moving from Scheme or Java to Python if they haven't already. (One notable exception is the excellent 6.172, about Making Things Fast(tm), which uses C and Cilk.)
The videos will be recorded this fall semester; Erik will be lecturing again, along with the equally awesome Srini Devadas. In the past, when Erik has recorded his own lectures, I recall that they were posted as soon as they were edited. Every time I've worked with OCW, though, one of their staff members comes in and collects materials at the end of the semester.
I'm not sure exactly what the material differences will be; that's the lecturers' call (way above my pay grade!). If you want more than 6.006 offers, though, check out 6.046, which is the follow-on undergraduate algorithms course.
Since we're doing as much of our planning now as possible, I'm curious: what sorts of things do you wish we'd include? Does anyone have suggestions?
For reference, MIT has two undergrad courses - 6.006 and 6.046 - which use CLRS, covering about half the book each. An undergrad course at MIT is expected to take up about 140 hours, including lectures, reading, and assignments. So, working for 10 hours per day, one could theoretically complete each course in two weeks.
There are a few other things to consider. One is that it's probably not necessary to go through all of the material to be able to manage interview-type questions. (It would obviously be best to undertand CLRS from cover to cover for the purpose of becoming a better engineer, but that's not what's under discussion.)
Second, it's really questionable whether someone can effectively work for 10 hours per day on this sort of material. My guess is that people fall into two categories - those who are not used to algorithmic thinking, and those who are. People from the first category would not be able to absorb that much new information that quickly, so for them, what I said is inaccurate. However, people in the second category would not only be able to process CLRS in large batches, but would need much less than 140 hours to work through half the book; someone familiar with the underlying concepts (basic programming, probability, etc.) and with a background in proofwriting could very well get through enough information to answer interview questions twice as fast or faster, so in about a week or less.