Massachusetts Institute of Technology
Dept. of Electrical Engineering and Computer Science
Spring Semester, 2007
6.188: Supplementary 6.001 course for 6.081 students

Lectures: Monday 4-5 (five lectures only) in room 36-156.

Office hours: Friday 11-12, Sunday 4-6 in 34-501 (Sunday hours are joint with 6.081)

Special meeting: The final meeting of 6.188 will be on April 23 from 4-5 in room 32-D463, the Sata Center's Star Conference Room. The topic will be Turing's celebrated Halting Theorem, and we will be celebrating the theorem with a party. Refreshments will be provided.

Syllabus

Lecture Date and topic Assignment due before lecture Reading/study material
March 5: No lecture, but preliminary work due Due March 5: Do 6.001 project 0 and register for the 6.188 on-line tutor and do first tutor assignment (see details) Textbook section 1.1 chapter 1, or online lectures chapters 1-2.
March 12: Models of evaluation, the substitution model Due March 13 (note date change): Do 6.001 project 1 parts 1-5 and complete online tutor problems (see details) Textbook finish chapter 1, or online lectures chapters 3-4.
March 19: Practice with Scheme
(Lecture notes)
Due March 19: Do 6.001 project 1 parts 6-7 and complete online tutor problems (see details) Textbook sections 2.1-2.3, or online lectures chapters 5-7.
April 2: The environment model Due April 2: Read over next programming project and complete online tutor problems (see details) Textbook sections 3.1-3.2, or online lectures chapter 9
April 9: The evaluator Due April 9:Online tutor problems in problem set 5, which are based on the online lectures chapter 10. Note that half the tutor problems are due on April 18 (see details). Online lectures chapter 10. You are welcome to read section 4.1 of the textbook as well, but you'll need to listen to the online lectures in order to do the problems.
April 16: No lecture Due April 18:Complete the tutor problems in problem set 5. Also, completed advisor problem set is due on April 23 (see details) Online lectures chapter 11
April 23: Turing and computability Celebration! In room 32-D463  

Welcome to 6.188

This course is a 3-unit supplement for students taking 6.081. Completing this course together with 6.081 satisfies the EECS Department prerequisite for 6.001.

6.188 has two main goals:
  1. Review the basic material on abstraction and modularity in software covered during the first month of 6.081. We'll use the same "primitives, means of combination, means of abstraction, capturing common patterns" framework as you saw for Python, only this time for the Scheme programming language. Scheme and Python are very similar, but Scheme's simpler syntax and more uniform evaluation rules will let us consider more formal models of the rules for evaluating expressions. We'll develop these formal models to the point where we can describe evaluation itself as a program and thereby implement an interpreter for a programming language. The motivation here is to show you how to be not only users of programming languages, but also designers and implementors of programming languages.

  2. Provide additional programming experience beyond what you saw in 6.081. In particular, we'll look at symbol manipulation and tree-shaped data, which will be useful background for subsequent courses like 6.034.

Required work

There will be five lectures during the semester, as indicated in the syllabus above. Assignments will consist of short problems with the on-line tutor and also a couple of the extensive programming projects that will be given in 6.001 this semester. See assignment submission guidelines for more details.

There will be no exams. Grades will be based on performance on the tutor problems and programming projects and on interviews with Hal and Tiffany.

Resources

We will be using the same programming environment -- Dr. Scheme -- as in 6.001, and you can do your work using Dr. Scheme on your own computer or on Athena. For programming help, you can use the 6.001 lab (same place as the 6.081 lab) and you can ask for help from the 6.001 LAs. Please see the 6.001 course web site for information about lab hours and other materials. You can send mail to 6.188-staff@mit for additional help.
6.188 online tutor login page
For study material , you can listen to the online lectures, or, as you prefer, use the textbook Structure and Interpretation of Computer Programs (Hal Abelson and Gerry Sussman, with Julie Sussman). You do not need to purchase a copy of the book. The complete text is on line here.