6.001 - Structure and Interpretation of Computer Programs
Spring 2005

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.

Resources for the 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).

Current announcements

Posted, May 18: Prizes for the 6.001 project 4 contest

    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, Prof. Grimson selected the following entries for prizes (which will be distributed at the final exam).
    • Mark Mascaro created a full Dungeons and Dragons regime. Roaming monsters battle each other and the avatar, gaining experience and leveling up. Every 100 experience points allows the player to advance one level. Magic points are required to cast spells. Players can drink potions and memorize learned-spells that cannot be lost. New learned-spells and magic points may be awarded at each new level. The avatar graduates from WIT when he reaches level 20.
    • Paul Peeling added the game of Quizzitch. All of the WIT staff (professors, trolls and hall monitors) are pitted against the students (a typically unfair situation). Everybody has to participate, and a Seeker for each team is randomly assigned. The goal for the Seeker is to take the Brass Rat, at which point the game ends, and the Seeker's team get 100 points. Other features are Quaffles and Bludgers.
    • Irene Zhang created a style mod of the game, allowing the user to rescue a Scheme Princess from the evil Professor Grimson in the Tower of Stata. This included a very nice system of mazes with disappearing doors and one-way passages, etc.
    • Michael Price created a total conversion of the game into a flight simulation with bombers and fighters. There are also missile batteries, etc. The gameplay is split between two levels: airborne and ground. An interesting conversion of an adventure game.
    • Anna Teytleman created implemented hacks. Hacks are creative and/or silly things that can be placed around the world. However, in order to place or see hacks, you first have to find the hacking degree. Included are some very clever MIT jokes.
    • Karen Chu created a complete Hogwarts world, a dementor or patronus setup, prefects that irritate students, students that sass others and are punished for it by prefects and professors, health aids to regenerate health, hidden treasure rooms that serve as goals for winning the game, a spell level advancement system, and a simple turn-style multi-user setup.
    • Iolanthe Chronis created a time turner. The clock keeps track of the complete system state at each time step, including the random seed. A time turner allows the user to turn back the clock to completely reset the system state as it was some time in the past. Since the random seed is reset, even "random" behavior is preserved as being the same. When the users travels back in time, a new copy of that person is created with all their future possessions.
    • Matt Ince created Hairy's car. What better to go with Hairy Cdr than Hairy's car! This student implemented a vehicle class that can hold a driver as well as passengers. The control of the vehicle is through a Permit object which only chosen ones and avatar know how to use. However, since they are not good drivers, the vehicles bum into random things as they move about (and there is an ejection seat in case the vehicle gets destroyed).
    • Jesse Louis-Rosenberg implemented genetic code: 4 genes, 4 amino-acids each, they describe a person's attributes (such as health or intelligence). Breeders mate with each other, combining the dna, even mutating from time to time, then babies grow until they can mate, and so on.
    • Bill Jacobs created a game-board class and three subclasses, which play Wizard's tictactoe, checkers, and connect 4. People can pick up the board and play it against any opponents they find; autonomous people make random valid moves. The board took string input and had a text display.
    • Xavid Pretzer added some hacking to WIT. A hacker class opens locked doors, pulls pranks when they got to rooftops, and defends the institvte from inflatable palm trees. Physplant workers re-lock the doors and remove the pranks as they find them.
    • Matthew Steele created a system for dynamically constructing new spells out of primitive components. The spells thus constructed are known as meta-spells, and they consist of chains of meta-blocks. Each meta-block contains an action and an incantation. In addition, the system contains meta-tools, a class of wands that allow users to manipulate the constituent meta-blocks of a spell.
    • Kathy Yuan Ye implemented a dueling arena, a separate area in which characters fight. All characters duel against all other characters automatically. The arena contains a publicly visible scoreboard and runs automatically. It is an area separate from the rest of the WIT world, and is populated with duelers with differing starting states. A duel class is implemented to keep track of the state of specific duels.
    • Jayant Krishnamurthy added wearable equipment. Taking advantage of the fact that classes are first-class objects, the equipment takes in a class as an argument to its constructor, and becomes an instance of both equpipment and that class. So you can have wearable wands, etc.
    • Pete Kruskall added owls, a new kind of person which can be asked to carry a message between two people. They use a shortest-path algorithm to devise the best way to track down their target, try to chomp on the hand of anyone who steals the message, and finally deliver the message once they reach their target.
    • Joshua Pevner added Schemer's Skript, which lets players create their own spells at runtime by writing a selection magical words on a scroll, which are combined and transformed into a procedure.
    • Ceryen Tan implemented a simple quest engine. A quest is composed of a set of objectives that must be accomplished in sequential order in a specific timespan. The player must successfully complete each objective or the whole quest will fail. While not required, each objective generally works towards some overall goal, such as saving a heroine or defeating some powerful enemy. An objective in the latter example might be to retrieve the only spell that can kill the enemy.
    • Eric Liu implemented a dueling competition. He made a separate world (perhaps like the chamber of stata-just a separate room without entrances and exits); the WIT student will be cloned into the room (like virtual reality) and given a set of spells and counterspells. Then each round, duelers can target and attack someone with some `logic' based on a variety of factors.

    Posted May 15, 2005: Final Exam!

    • Remember that the final exam is scheduled for Thursday, May 19, from 9:00 to 12:00 in Johnson.
    • The exam is closed book, however you may bring three sheets of 8.5 by 11 inch paper with you containing any notes you think may help you.

    Posted May 8, 2005: Survey says!

    • Please help make 6.001 better for future terms!

      As you may know, 6.001 is conducting an educational experiment, in which we have changed the manner in which material is presented to you. We would really like to get your feedback on how well 6.001 met various pedagogical objectives, as well as on the course organization. As well, we would like to measure how well you think you've mastered specific design skills, as this will help us understand whether the new approach is pedagogically effective. The results will be used only for the purposes of guiding the development of the course, in order to improve the learning experience for future classes of students. To do this, we ask you to go to the on-line tutor, and complete the information listed as Problem Set 11. Thanks!

    Posted May 7, 2005: Feedback on the Lab Assistants:

    • The Lab Assistants would like some feedback on how well things worked this term. At your convenience, please go to http://web.mit.edu/6.001/www/la to complete a brief, anonymous survey. Thanks

    Posted May 5, 2005: Correction or Clarification For Project 5, Problem 9:

    • The output of names-used-in in the first sample test case should include the symbol +. Thus it should read: (names-used-in '(until (> x n) (display (* loop x x)) (set! x (+ x 1)))) => (+ > x n display * loop) The order in which the list of symbols is output does not matter.
    • For the second half of Problem 9, we ask you to 'fix' a desugaring which exhibits name capture. If you somehow wrote all of your desugarings to avoid name capture, you can either introduce the "until" special form which we show in the project, or intentionally change one of your desugarings to exhibit name capture.

    Posted May 2, 2005: Example quiz solutions

    • A sample of solutions for quiz 2 is found here for your information.

    Posted April 30, 2005: Minor change in code

    • If you use refresh-environment there is a chance that Edwin could crash, as under the current version this can return a very large list of data structures. The code has been modified, you can do this directly yourself using:
      (define (refresh-global-environment)
        (set! the-global-environment (setup-environment))

    Posted April 27, 2005: Reminder of upcoming guest lectures

    • This is a reminder that we will have two guest lectures in the class, both highlighting different current areas of activity in computer science, that draw on things you have seen in 6.001 this term.
      • Prof. Erik Demaine, May 5th: Geometric Folding Algorithms: Origami, Linkages, and Polyhedra
      • Prof. Frans Kaashoek, May 10th: Peer-To-Peer Computing Research: A Fad?

    Posted April 27, 2005: Slightly revised Project 5 is available

    • A slightly revised version of Project 5 has been released on the web site. This clarifies the last problem on the project.

    Posted April 24, 2005: Project 5 is available

    • Project 5 has been released on the web site, and can be accessed from the Projects page.

    Posted April 21, 2005: Quiz 2 Statistics

    • Here are the statistics on the second quiz:
      • Mean: 82
      • Median: 85
      • Standard Deviation: 13
      • Grade of A for scores of 90 or better
      • Grade of B for scores of 75 or better
      • Grade of C for scores of 60 or better
      • Grade of D for scores of 45 or better

    Posted April 19, 2005: Quiz 2 review

    • Note change in time and location. The quiz review for today will be in 8-302 from 3:00 to 5:00.

    Posted April 15, 2005: Quiz 2 review

    • The Lab Assistants will be holding quiz reviews:
      • Monday, April 18, 2005, 7:00 p.m. - 9:00 p.m., in 4-145
      • Tuesday, April 19, 2005, 5:00 p.m. - 7:00 p.m., in 4-145

    Posted April 14, 2005: Quiz 2 details

    • A reminder that Quiz 2 is scheduled for next Wednesday, April 20, at 7:30 PM. Students whose last name begins with the letters A-M will take the exam in 32-123, all other students will take the exam in 34-101. If you have a conflict at this time, you must contact Donna Kaufman (dkauf@mit.edu) to schedule a conflict exam.

      Also note that the quiz will be closed book. You may bring two sheets (8.5 by 11 inches) of notes with you to the exam.

  • "Structure and Interpretation of Computer Programs", the text for the course, is available online (link below), or at Quantam Books, for about $52. It is also available at the MIT Coop.
  • During lecture on February 1st, we will be gathering information which we will use to assign recitation sections. These assignments will be posted on the web later that day. Starting Wednesday, February 2nd, please attend the recitation to which WE assign you, based on those posted assignments. If you have a conflict with our assignment and only if you have a conflict with that time then you should contact the course secretary by email to arrange for a new assignment. During recitation you will complete an informational form that will help us assign tutorials. Do not email the course secretary about section changes until after sections are posted. Thanks!

Complete list of previous announcements

How to get help/Staff hours for lab

Course objectives and expected outcomes
Projects and project information
Reading assignments

Online version of the textbook, courtesy of MIT Press

Supplemental Material
General information
Don't Panic Manual and information on 6.001 Scheme
Emacs documentation and information on Athena
How to write up a project
Policy on collaborative work
Records of previous terms
Download scheme

User Name:
If you do not yet have a tutor account, please register here first.

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