This selection of programming assignments, drawn from material developed for MIT's introductory computer science subject, is provided for the convenience of instructors teaching courses based on Structure and Interpretation of Computer Programs, and as a self-study aid for people using the book on their own.

There is a separate directory for each assignment. In general, individual directories will contain:

Note to instructors

The PostScript files here are provided as a guide to what the problem sets should look like. You should not expect to simply print them out and assign them without modification. Some of the assignments available rely on specific features of MIT Scheme and idiosyncrasies our programming environment at MIT. Also, the exercise numbers alluded to in "the course notes" may not match the published textbook, since these assignments were constructed before the final revisions to the manuscript. In some cases (such as the adventure game) you will want to modify the problem set to remove MIT-isms and replace them with your own local color. Finally, the assignments are referred to by number -- problem set 1, problem set 2, etc. These numbers are the assignment numbers used during the semester that each one was assigned at MIT, and you will likely want to change them.


Copyright © 1985-1996 Massachusetts Institute of Technology.
The material in these problem sets may be duplicated, modified, and redistributed for any non-commercial use in conjunction with the book Structure and Interpretation of Computer Programs.

Available assignments

Assignment Relevant sections
in textbook
Introductory assignment 1.1
The game of twenty-one 1.3
Graphing with higher-order procedures 1.3
Continued fractions 1.3
RSA encryption 1.2.6, 2.2.1
Prisoner's dilemma 1.3, 2.2.1
Picture language 2.2.4
Term-rewriting evaluator 1.1, 2.3
Automated freshman advisor 2.3
Generic Arithmetic 2.4, 2.5
Object-oriented adventure game
3.1, 3.2, 3.3
Concurrency 3.4
Streams and series 3.5
Evaluators 4.1, 4.2
Languages for object-oriented progamming 4.1
Register machines and compilation 5.1, 5.2, 5.4, 5.5

Last modified: Tue Oct 8 17:24:15 1996