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
- 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
Posted, December 15: 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, Prof. Grimson selected the following
entries for prizes (these can be picked up from Prof. Grimson's office
(38-401) starting on Monday). There were many other very intriguing
submissions, and we are sorry we can't offer prizes for all of them.
- Christopher Moh created a battle game within a maze
setting. It included multiple monsters that become more difficult to
defeat with time, multiple spells, multiple levels, mapping
capabilities, and a whole lot more!
- Advay Mengele created a different battle system, using
scripting system to leverage callbacks. The system followed a
storyline and involved multiple tasks to be accomplished by the hero,
and multiple levels to explore.
- Jessica Nesvold incorporated space invasions, including a
space ship, aliens, teleporters, and docking stations.
- Steven Kim created a very nice GUI adaptation of Hairy Cdr,
complete with 3D map, and a full-fledged interface.
- Jim Wilberger added an elegant combat extension to the
game. The player has a choice of three different kinds of avatars,
leading to a different set of options for the player as the game
- Ruth Dhanaraj added a wide range of characters and physical
elements from the real Harry Potter series.
- Huy Nguyen implemented networking code into the game,
allowing it to be played simultaneously by two players.
- Michael Kennedy added time machines to the system in a very
- Patricia Martinez added a course major system to the game.
Characters from different courses have different rivalries (15 hates
6, 6 hates 15, 18 sides with 6, 7 hates trolls, 17 hates professors
and so on).
- Scot Frank extended his system to allow for browser
interactions and Athena interactions. Objects called
"athena-workstations" would allow the avatar to login, enter commands,
or Google the "workstation" (through an actual connection to Athena
and a real Google).
- Justin Curry implemented the Enneagram personality test as
a game, where the avatar progresses through a tower answering
questions at each of its 105 levels to work towards a comprehensive
personality assesssment at the very top.
- Eric Price also created a very elegant time machine. Not
only could the holder jump back in time, but the player can
actuallycontrol both the present and the past avatar.
Posted, December 7: Final Exam reminder
Final exam is Fri, Dec. 16, 1:30 to 4:30, Johnson. Exam is closed
book, but you may bring 3 pages of notes (8.5 by 11 inches, both
sides) with you to the exam.
Posted, December 5: Project 5 errata
There is an unfortunate typographical error in Project 5.
The test case for Problem 3 on page 4 should be
(let ((x '()))
(loop (set! x (cons '* x))
until (> (length x) 3)))
(*)(* *)(* * *)(* * * *)
;M-eval value: done
Also, if you are attempting the optional final problem, note that
the suggested code (which you do not necessarily need to use) makes
use of the procedure symbol-append.
However, DrScheme does not supply this procedure, so here is a
(map symbol->string symbols)))))
Posted, December 2: Project 5 released
The final project for the term is now available on the projects
web page. This is a shorter project since it is due in 1 week.
Posted, November 26: Project 4 minor correction
In the code for an autonomous person code, there exists this fragment:
(let ((exit (random-exit (ask self 'LOCATION))))
(if (not (null? exit)) (ask self 'GO-EXIT exit))))
This has a subtle bug which will not appear in the normal running of
the code. In particular, random-exit uses
pick-random which returns #f if the list passed to
it is empty. Hence, if there are no exits, exit is
#f and eventually the code will call
(ask exit 'USE self)
which will throw an error since exit is #f.
In the normal running of the system, this is not a problem, since
every place has exits, but it is possible that this will cause
problems in the extensions when there might be places with no exits.
One fix is to replace (not (null? exit)) with (not (eq?
Posted, November 21: Project 4 minor correction
In the code for screen-object, the expression 'location should be 'LOCATION, i.e., there is a case error.
Posted, November 20: Project 4 minor correction
There is one location in the code for Project 4 that includes a call to the pp procedure. This is a "pretty-print" procedure that exists in MIT Scheme, but not DrScheme. Simply replace this procedure call with a call to display or print.
Posted, November 14: Project 4 released
See the Projects link to access a copy of the project. Note the
change in due date to a later date.
Posted, October 23: DrScheme bug
A number of students have run afoul of a bug in DrScheme, in which it
is sometimes difficult to read back in a .scm file that had previously
been saved. This has apparently been fixed in the more recent release
of DrScheme. Hence if you are having difficulties, you may want to
load release 299.400 (instead of earlier releases) of DrScheme.
"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 recitations on September 7th, we will be gathering
information which we will use to assign recitation sections. For that
first day of recitation, please attend the recitation to which the
registrar assigned you (except for the 9:00 AM recitation, which is
cancelled; if you were assigned to that section, please attend any
other section, held in the same room at 10, 11, 12, 1 or 2). The new
assignements, based on our reorganization, will be posted on this web
site web later on Wednesday, or possibly Thursday. Starting Friday, September 9th, 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
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.
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.
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
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
Log in to the on line tutor
Send comments about this site to email@example.com.
Copyright © 1997-2005 by Massachusetts Institute of Technology.
All rights reserved.