Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs. (MIT course 6.001) is the first course in the core of departmental subjects which is required for all undergraduates in Electrical Engineering and Computer Science.
The course introduces students to the principles of computation. It uses the Scheme programming language, which is chosen for its theoretical simplicity, its expressive power in dealing with functional, imperative, and object-oriented programming styles, and the fact that it is well-suited to writing interpreters for a variety of languages.
Upon completion of the course, students should be able to explain and apply the basic methods from programming languages to analyze computational systems, and to generate computational solutions to abstract problems. This includes:
- Explaining and applying the major mechanisms for control of complexity in large programming systems: building abstractions, controlling interaction through conventional interfaces, and designing new languages.
- Discussing issues of programming style and programming aesthetics.
- Reading and modifying a substantial (20 pages) Scheme program, if it is written in exemplary style.
- Designing and implementing programs in Scheme that demonstrate the concepts covered in the course: recursive and iterative processes and procedures, higher-order procedures, object-oriented methods, data abstractions, procedures with state, and dispatch on type
- Understanding and modifying interpreters, either at the level of a register machine description or at the level of a higher-order language description.
The course is based upon the popular textbook Structure and Interpretation of Computer Programs, 2nd ed., by Abelson, Sussman, and Sussman. The complete textbook is available online from the MIT Press, and there are extensive course materials, exams, and sample syllabi on MIT OpenCourseWare.
The online course
The online material for 6.001 has been in use at MIT since the fall of 2000, with about 500 students each year. The material includes recorded audio lectures by Prof. Eric Grimson that are matched to lecture slides, full transcripts, and lecture handouts. There are also weekly online interactive homework problems using the 6.001 tutor. With the tutor, students fill in answers and ask the system to check and score their answers. They then submit the results, which are maintained in a data base for use by the course instructor.
Using the iCampus system for self-study
iCampus maintained a public implementation of the 6.001 tutor, however after over a decade the server running xTutor crashed and is not going to be brought back online. We encourage you to check out MIT’s latest computer science courses at MIT OpenCourseware or on edX.
Click here for help on getting started with the iCampus 6.001 online public tutor.
Using the iCampus system for teaching a class
iCampus invites faculty to use the online tutor for teaching classes. If you want to do this, you should first experiment with the system yourself, and then contact the iCampus Outreach Director to arrange for your class to use a customized instance of the course. a customized instance lets you provide your own messages and set the due dates for the assignments. We will also give you access to tools for managing student accounts and reviewing student scores on the problems.
iCampus can provide only limited personal support for your teaching, but we do invite you to participate in a self-help learning community of students and teachers who are using this material.
Contact us to request a customized course instance for your class.
Programming projects
Whether you are using this material for self study or for a class, we invite you to download Scheme software and try some of the programming projects developed for 6.001.
Students taking the course at MIT use MIT/GNU Scheme, which has implementations for Linux and Windows X86 platforms. The software and documentation are freely available at http://www.gnu.org/software/mit-scheme/.
You can find a collection of programming projects here on MIT OpenCourseWare. In particular, “Project 0” on that page helps students get started with the Scheme software and the integrated editor and debugger.
Additional programming assignments, made available by the MIT Press, can be found here.