6.001 - Structure and Interpretation of Computer Programs
Spring 2007

Welcome to 6.001!

This page is your entry to the course material. It includes current announcements of the course, pointers to other sources of information such as the online textbook, the course calendar, the programming projects, and the entry point to the online tutor system.

Resources for course material.

  • This term we are providing several resources for the course material for you.
    • You can reach the online version of the text book (see the link below).
    • You can use the lecture based "text book" by going to the tutor, clicking on the Lecture link, and then for each lecture, using the "lecture slides in pdf" link. This provides you a version of the slides of the online lectures, together with associated text descriptions. While these lectures are NOT identical to the live lectures, they cover similar material and give you a different perspective.
    • You can access copies of the lectures slides of the actual live lecture, by clicking on the lecture link in the course calendar (see link below). Note that these will typically be posted after the actual lecture.
  • "Structure and Interpretation of Computer Programs", the text for the course, is available online (link below), or at Quantam Books, for about $64. It is also available at the MIT Coop. An online site that provides access for ordering books is found at bookX site (which is an MIT based site for connecting sellers to buyers).

Current announcements

May 25: Prizes in Project 4

We had a lot of great submissions for the contest for Project 4, in which you were invited to extend the Object Oriented world in an interesting way. After a lot of agonizing, the 6.001 lecturers selected the following entries for prizes. There were many other very intriguing submissions, and we are sorry we can't offer prizes for all of them.

  • Greg Durrett created a strategy game in which the player must assassinate a king by directing a team of assassins. The king has guards, however, as well as a crystal ball that shows where the assassins are.
  • David Farhi added trainable pets to the system. When a pet does something, you can reward or scold in various ways, and the pet uses a weight-based learning algorithm to change its behavior in the future.
  • Steven Herbst implemented a murder mystery, in which the player detective tries to solve the mystery by interviewing witnesses with faulty (and gradually fading) memories.
  • Jessica Ho designed a world inspired by Harvest Moon, where the player runs a small farm, raising crops and livestock, and trying to make a profit in the market.
  • Martyna Jozniak implemented a soccer game in which the player coaches a team to victory, including tackling, substitutions, and even sudden-death penalty shootouts.
  • Tony Kim implemented a graphical user interface for the world, complete with animations for the avatar and a method of combat by throwing inventory items at enemies.
  • Paresh Malalur created a graphical turn-based strategy game, with a rectangular grid of terrain images with characters sprites superimposed on it.
  • Brent McLaughlin implemented the game Zelda, Ocarina of Time, with a more friendly driver loop, new types of people and places and things, and a whole new world.
  • James Ostrowski implemented "24" with Jack Bauer at MIT, running against a real-time clock. One highlight is a chase scene with Richard Stallman on a gnu and Jack Bauer on a Linux penguin, illustrated in ASCII animation.
  • Maciej Pacula wrote an HTTP server in Scheme, so that the game can be played over the Web using an ordinary web browser.
  • Tynan Smith created a self-operating economy with items, merchants, and "recipes" that can create new items from collections of old items.
  • David Wen added "Oddball" mode (inspired by Halo), where the player and several autonomous competitors fight to hold on to the Oddball as long as possible before getting killed.

May 15: Final Exam information

  • A reminder that the final exam is scheduled for May 22 from 1:30 to 4:30 pm, in Johnson Athletic Center. The final is closed book, but you may bring three pages of notes (8.5 by 11 inches, both sides) with you to the quiz.
  • An archive of past quizzes is available for study and practice.

May 9: HKN Student Evaluation

April 30: Project 5 released

  • The fifth and last programming project of the course is now released on the projects page. It's due on May 11. Also note that there is a file of provided code to be downloaded as part of the project.

April 25: Some minor "bugs" in Project 4

  • There are a couple of minor glitches in the project. They don't affect the running of the code, but they do affect the simulation world.
    • We forgot to connect the student street to the rest of the world (of course maybe this explains why students don't come to lecture, as they are stuck on the street drinking coffee). In the world.scm file, add the following line (can-go-both-ways stata-center 'east 'west student-street) to the function create-world
    • Exercise 5 of the project has a flaw. If autonomous people lose health every 10 ticks, then the whole world dies after 30 ticks since autonomous people are never given the ability to autonomously eat food. This was unintentional. If you want to fix this, you can also add something to autonomous-person that eats when it has food and is almost dead. Perhaps it could also always pick up food when it see it. This might create a supply problem in the world, so you might also want to add food to the world.

    April 24: Quiz 2 data

    • Here are the statistics on Quiz 2:
      • A: Grades of 85 or better
      • B: Grades of 70 or better
      • C: Grades of 55 or better
      • D: Grades of 40 or better

    April 16: SLUG hack vs. SLUG object

    • In Project 4, there is a hack named SLUG that creates a mobile-thing named SLUG, which gets confusing when you try to pick up or drop them by name. You can fix this by changing the name of the hack to SLUG-HACK.

    April 13: Quiz 2 information

    • A reminder that the second quiz of the term is scheduled for April 18th from 7:30 to 9:30. This will be held in Walker (50-340). The quiz is closed book, but you may bring two pages of notes (8.5 by 11 inches, both sides) with you to the quiz. The quiz will cover topics from material presented up to April 6 (i.e., including environment models and message passing objects with state, but not including the OOPS system of project 4).
    • An archive of past quizzes is available for study and practice.
    • The Lab Assistants will be holding quiz reviews:
      • Monday, April 16, 2007, 7:00pm-9:00pm, Rooms 32-141 & 32-155
      • Tuesday, April 17, 2007, 7:00pm-9:00pm, Rooms 32-144 & 32-155

    April 9: Quiz 2 conflict information

    • The second quiz of the term is coming up: scheduled for April 18th from 7:30 to 9:30. If you cannot take the quiz at this time due to a scheduling conflict, we have arranged for a conflict exam to be held April 19th, in 4-237 from 3:00 to 5:00. If you need to take the conflict exam, you must send an email to Donna Kaufman (dkauf@mit.edu) to arrange this.

    April 7: Project 4 released

    • The fourth programming project is now released on the projects page. It's due on April 27. Also note that there are three files of provided code to be downloaded as part of the project.

    March 19: Project 3 released

    • The third programming project is now released on the projects page. It's due on April 6. Also note that there is a file of provided code to be downloaded as part of the project.

    Complete list of previous announcements

    Getting help in 6.001

      Just a reminder that the Lab Assistants in the 6.001 Lab are often available to provide help with course material. This is especially true if you visit the lab during non-peak hours (i.e. not right before a project is due)! See

      How to get help/Staff hours for lab

      for staffing hours.

    Additional resources

    The following links contain information that is of value in understanding the content and organization of the course

    How to get help/Staff hours for lab

    General information
    Course objectives and expected outcomes
    Projects and project information

    Online version of the textbook, courtesy of MIT Press

    Don't Panic Handout
    How to write up a project
    Policy on collaborative work
    Records of previous terms
    Download scheme

    Log in to the on line tutor
    User Name:
    If you do not yet have a tutor account, please register here first.

    Send comments about this site to welg@csail.mit.edu.
    Copyright © 1997-2006 by Massachusetts Institute of Technology. All rights reserved.