A blue and yellow fractal image.

A fractal generated from the hailstone sequence, as discussed in Lecture 1 of 6.005 Software Construction. (Public domain image from Wikipedia.)

By Joe Pickett, OCW Publication Director

One of the great strengths of OCW as an educational resource is its extensive list of course sites from MIT’s Department of Electrical Engineering and Computer Science. You might think, with so many courses published from the EECS curriculum, that OCW’s work for this department has reached a plateau.

But OCW continues to climb higher, augmenting and refreshing the course list, and two new publications present superb cases in point.

Learning to Think Like a Programmer

6.0001 Introduction to Computer Science and Programming in Python represents MIT’s evolving approach to this core subject, in which students with little or no programming experience learn how to write small programs that accomplish useful goals. 6.0001 is a six-week module using the Python 3.5 programming language.

Screenshot from video, of woman speaking in front of a chalkboard, holding a laser pointer.

Dr. Ana Bell explains a Python programming example (“robot cheerleaders”) in 6.001 Lecture 3.

The course site, showing the Fall 2016 class, has full video lectures featuring Dr. Ana Bell and Professor Eric Grimson. Slides and code for each lecture are also provided, as are interactive in-class questions with videos showing the answers to those questions. The textbook for the course was written by Professor John Guttag, who is well known to OCW fans for his popular OCW Scholar course, 6.00SC Introduction to Computer Science and Programming. The 6.0001 assignments page has helpful links to the 6.0001 Style Guide and a handy list of programming resources, including the Python Tutor.

Learning to Construct Software

Students who have developed some programming skill might then move on to 6.005 Software Construction, as taught in Spring 2016 by Professor Rob Miller and Dr. Max Goldman. As the instructors say in the syllabus, the course “introduces fundamental principles and techniques of software development, i.e., how to write software that is safe from bugs, easy to understand, and ready for change.”

Image containing some notes and a bubble+lines graph.

“Graphs—what are they good for? Poetry!” A page section from the problem, “Poetic Walks,” in the 6.005 Assignments.

An advocate of active learning, Professor Miller has his MIT students read a carefully structured textbook before coming to class so that most time can be spent doing exercises. The OCW site includes the full set of class readings, along with problems sets and a project, the ABC Music Player.

6.005 uses the Java programming language, for which help is available via the 6.005 Getting Started page and OCW’s popular course on Java, 6.092 Introduction to Programming in Java.