[old presentations]
[old FAQs]

# Gerald Dalley's 6.001 Website (Spring 2005)

For the Spring 2005 term, I am a teaching assistant for 6.001: Structure and Interpretation of Computer Programs, affectionately known as SICP (pronounced "sick-pea"). I am collecting various notes here, primarily for my students.  It is the introductory Computer Science course at MIT, and at the time it was taught in the Scheme programming language (a LISP dialect).  This page contains recitation notes that were posted primarily for my students and for reference by future instructors.  For the Spring 2007 term, I was a recitation instructor for the same course.

## Handouts and Important Emails

Tutorial 1: 7-8 February 2005
Topics Covered
 Basic expressions
 Worksheet [PDF] Follow-up [txt] Worksheet source [zip]
Tutorial 2: 14-15 February 2005
Topics Covered
 Substitution model Recursion and iteration
Worksheet [HTML+JavaScript][PDF] [MS Word]
 The HTML version contains embedded answers that can be revealed by clicking on the questions. It has been tested on Internet Explorer 6 and Mozilla Firefox 1.0.
Follow-up [PDF]
Worksheet source [zip]
Tutorial 3: 21-22 February 2005
Topics Covered
 Orders of growth let Pairs and lists Higher-order procedures
 Worksheet [PDF] Worksheet answers [PDF] Some box diagram examples [PPT][PDF] Orders of Growth Primer [PDF] Follow-up [TXT] Worksheet source [zip]
Tutorial 4: 28-29 February 2005
Topics Covered
 More higher-order procedures Data abstractions
 Worksheet [PDF] Worksheet answers [PDF] Worksheet source [zip]
Tutorial 5: 7-8 March 2005
Topics Covered
 Quotation Symbols Equality tests Symbolic Boolean expression manipulation Tutorial feedback
 Worksheet (corrected) [PDF] Worksheet answers [PDF] Worksheet source [zip]
Tutorial 6: 14-15 March 2005
Topics Covered
 Pair/list mutation alists Class database example
 Worksheet [PDF] Worksheet answers [PDF] Worksheet source [zip] Follow-up [txt] Project 2 feedback [txt]
Tutorial 7: 28-29 March 2005
Topics Covered
 set! Order of growth of linear data structures Memoization
 Worksheet (updated with Project 3 clarifications) [PDF] Worksheet answers [PDF] Worksheet source [PDF]
Tutorial 8: 4-5 April 2005
Topics Covered
 Environment model Common built-in procedures cheat sheet Environment model cheat sheet
 Worksheet (with updated cheat sheet highlighting) [PDF] Worksheet answers [PDF] Worksheet source [PDF] Project 4 clarifications [TXT]
Tutorial 9: 11-12 April 2005
Topics Covered
 Object-oriented programming, a la project 4
 Worksheet [PDF] Worksheet answers [PDF] Warm-up 5 answer (corrected 2005-04-12 10:21AM) [PNG, PDF, VSD] Syntax-highlighted source for project 4 [PDF]
Object Oriented Systems III Recitation: 13 April 2005
 Presentation [PPT powerpoint][PDF][HTML semi-portable HTML][MHT IE-specific HTML] Scheme source [ZIP]
Quiz 2 Review: 18-19 April 2005 [ZIP]
Tutorial 10: 25-26 April 2005
Topics Covered
 Dynamic vs. lexical scoping Meta-circular evaluator
 Worksheet (modified 2005-04-25 2048) [PDF] Worksheet answers and source [ZIP]
Tutorial 11: 2-3 May 2005
Topics Covered
 Lazy evaluation Streams Image and signal processing
 Worksheet (modified 2005-05-02 2250) [PDF] Worksheet answers [PDF] Worksheet source [ZIP]
Tutorial 12: 9-10 May 2005
Topics Covered
 Asynchronous computing Final exam review Feedback
 Worksheet [PDF] Worksheet answers [PDF] Worksheet source [ZIP]
Final Exam Review [PPT][PDF -- available but much less useful than PPT]

## Scheme Tools

The following are some Scheme tools I've written and found helpful for myself.
 scm2html.zip: A PERL script for creating syntax-highlighted HTML files from SCM source files. For example, assert.html was generated from assert.scm. Assert [SCM][HTML]: Several assertion procedures that can be used to make defensive coding much easier. env-dia.zip: An automatic environment diagram generator.  Run your code, then call the right procedure, and out pops an image with the corresponding environment diagram.  Read the documentation in the .scm file for usage instructions and limitations.