Photo of a Frisbee with "6.046 Spring 2015" and a diagram of a flow network.

A Frisbee® featuring a flow network diagram was tossed out during lectures to reward class participation. (Photo courtesy of Prof. Devadas)

By Joe Pickett, OCW Publication Director

When it comes to algorithms, OCW has an undeniable embarrassment of riches.

The latest algorithmic bloom is 6.046J Design and Analysis of Algorithms as taught in spring 2015 by Professors Erik Demaine, Srinivas Devadas, and Nancy Lynch.

Anyone who has spent time exploring OCW’s collection of courses from the Electrical Engineering and Computer Science Department will recognize Professor Demaine, whose name appears on nine OCW course sites. Professor Devadas is another OCW champion, with five active course sites. He has just been honored by MIT for his distinguished teaching as a MacVicar Fellow. 6.046J marks the second OCW course by Professor Lynch (6.852J Distributed Algorithms is the other).

The 6.046J course site is bursting with resources, with full video lectures and lecture notes, full recitation (problem-solving) videos and notes, assignments and solutions, and exams and solutions.

Wait! There’s a Pre-requisite!

Students wishing they could tone up their algorithmic muscles before getting into 6.046J should investigate 6.006 Introduction to Algorithms. This course, taught in Fall 2011, also features Professors Demaine and Devadas and has a similarly rich array of resources–full video lectures, recitation videos, and more.

And Multiple Versions!

But that’s just the beginning. OCW captures the rich history of the last decade of algorithm instruction at MIT. On the site for 6.046’s Fall 2005 version, taught by Professor Demaine and Professor Charles Leiserson and complete with full video lectures, problems sets, and solutions, users can see what it looked like when the entire undergraduate algorithm curriculum was taught in a single semester. The Spring 2008 version of 6.006, complete with lecture notes, recitation notes, and assignments and again taught by Professors Demaine and Devadas (along with Professor Ron Rivest), showcases the effort to split algorithms into two more manageable and less frantic semesters. The other side of this divide can be found in the Spring 2012 version of 6.046J, taught by Professors Dana Moshkovitz and Bruce Tidor, which includes complete lecture notes and selected recitations.

Teaching Insights!

Screengrab photo from a video of Prof. Demaine seated in his office, speaking.

Professor Erik Demaine shares his teaching insights in a series of short videos.

As conveyed in his Instructor Insights videos for the newly published 6.046J, Professor Demaine hopes not just to teach students how to solve problems with elegant sets of instructions, but to get students to adopt a certain way of looking at things, almost a philosophy: “The whole algorithmic way of thinking of setting up a problem—what should the input and the output be—and then thinking about all different solutions for how to fill in the middle I think is a really powerful perspective, and it can shape pretty much your entire life, but especially if you’re doing computer science.”


Sharing enthusiasm is really the key to teaching algorithms, says Professor Demaine, who is continually enthralled by the subject. He can’t resist saying things like, “Wow, how did they come up with this?” and “Wow, I mean, look how this thing interacts with this thing and magically it all runs superfast!”  There’s a method here: “I think communicating that excitement, students pick up on it really quickly and get engaged in the material and care more about it.”

It’s like spring fever—so infectious!