6.037 - Structure and Interpretation of Computer Programs

Introduction

This fast-paced course covers the material in the classic book Structure and Interpretation of Computer Programs -- a class previously known at MIT as 6.001. It uses Scheme to introduce students to principles of computation, and to teach thought patterns for computer science. Students are taught to apply structural, procedural, and meta-linguistic abstraction to solve computational problems. Four projects, one per week, will be assigned and graded.

Prerequisites: some programming experience; high confusion threshold.

This class is not meant as an introduction to programming; some programming experience is assumed. If you are looking for a preparatory class for 6.01, 6.149 (for those with no programming experience) or 6.177 (for those with some) are more likely the correct IAP classes to take.

6.037 focuses on higher-level concepts and abstraction in Scheme, an interesting but esoteric language which is infrequently seen in the wild; The language is light on practicality, but lends itself well to discussing computational theory. The class attempts to cram the entire material of a semester-long MIT course into eight two-hour lectures, with accompanying individual weekly projects, and as such is rather information-dense.

Your tour guides for this adventure are: Alex Vandiver, Ben Vandiver, Ethan Sherbondy, Mike Phillips, and Zev Benjamin. To contact them, you can email 6.001-zombies at the obvious domain.

Logistics

Projects

There will be five projects assigned. Projects should be saved as plain text, and emailed to 6.037-psets at the obvious domain.

Lectures

Slides presented in class will be linked below. For each, we've noted which SICP chapters and which Spring 2007 lectures we've drawn the material from, in case you want to delve deeper, get a second opinion, read ahead, etc. Please note that the book covers a lot of additional material, and we are mostly tracking the old lectures, not the textbook.

Resources

Getting help

Acknowledgments

Since this course is a heavily condensed version of 6.001, we owe thanks to all who have ever taught or otherwise supported 6.001 over its long run. While these people are too numerous to list here, there are definitely some names we would be remiss to omit: