6.037 - Structure and Interpretation of Computer Programs
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. Five
projects, one per week, will be assigned and graded.
Prerequisites: some programming experience; high confusion
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, we suggest either
those with no programming experience)
(for those with some) as more likely the correct IAP class 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
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.
- Class meets TR7-9pm throughout IAP, in 32-044
- 6 units of P/D/F credit are available; only the projects are
There will be five projects assigned. Projects should be saved as
plain text, and emailed to 6.037-psets at the obvious domain.
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.
- Lecture 1: Syntax of Scheme, procedural abstraction, and recursion
- Lecture 2: Data abstractions, higher order procedures, symbols, and quotation
- Lecture 3: Mutation, and the environment model
- Lecture 4: Interpretation and evaluation
- Lecture 5: Debugging
- Lecture 6: Language design and implementation
- Lecture 7: Continuations, concurrency, lazy evalutation, and streams
- Lecture 8: 6.001 in perspective, and the Lambda Calculus
- Racket (previously DrScheme), the scheme evaluator we will be using
- Also available on Athena machines: add drracket; drracket
- For language selection, select "Use the language declared in the source." Hit the details button, and set the Output Style to 'write'. The Language menu will allow you to make these changes.
- Structure and Interpretation of Computer Programs, the textbook written for 6.001. A PDF version is also available.
- Lecture notes from 6.001, Spring 2007 might be useful for getting extra exposition on some topics as well, or to look ahead before the Caffeinated slides for those topics are posted.
- 6.001 online tutor, from the MIT iCampus XTutor project. This contains online problem sets you can do and get instant feedback (you will grow to love the "check" button as much as students of yore). We won't grade these — so ignore the due dates associated with them! — but some people may find it a useful way to do little exercises to check their understanding of the topics presented. It also contains online versions of the lectures, with synchronized audio and slides.
- The Revised5 Report on the Algorithmic Language Scheme:
- You can e-mail the course staff at: 6.001-zombies at the obvious
- Students are also welcome to join the staff on Zephyr, MIT's
messaging system. Subscribe to the class named "6.037". If you're new
to Zephyr, we recommend the
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:
- Eric Grimson, who taught 6.001 a total of 27 times, and from whose
lecture slides and projects we have borrowed heavily.
- Gerry Sussman and Hal Abelson, the original architects of the course
and authors of the SICP text.
- Anne Hunter, Course 6's fairy godmother, for taking an interest and
helping make sure 6.037 happened.