CS21b: Structure and Interpretation of Computer Programs

CS21b (Spring 2013): Structure and Interpretation of Computer Programs
"There are only 5 ideas in Computer Science, and by the time you
finish this course, you will know 3 of them."
Course instructor:
Harry Mairson (Volen 257, x2724, mairson@cs). Office
hours: Tuesday and Friday 11am-12pm, and by arrangement. If you can't
make these hours, drop by another time--I'm flexible, and usually in.
I promise to talk to you during office hours, and I probably will
anyways if it's another time.
TAs:
Kenny Foner, email (Tuesday 4-6pm, Thursday 4-6pm).
Zhan Li, email (Monday 2-4pm, Wednesday 4-6pm).
Hang Yang, email (Tuesday 2-4pm, Thursday 2-4pm).
The TAs run office hours in the Vertica lounge
Class Information
PROBLEM SETS
Some suggested submission guidelines (to nudge you in the right direction)
Problem Set 1: Lunar Lander (now due February 8).
pdf
required Scheme code
Problem Set 2: Computer Psychiatrist (due March 1).
pdf
required Scheme code
Problem Set 3: The Stability of Marriage (due March 15).
pdf
required Scheme code
Problem Set 4: Streams and Lazy Evaluation (now due April 9).
pdf
required Scheme code
Problem Set 5: Metacircular Evaluator (due April 19).
pdf
required Scheme code
normal order Scheme evaluator
Lecture notes
Introduction
Cursing, and recursing
"What is that lambda thing?" Formulating abstractions with higher order procedures
Picture language
Data with Destiny
Binomial priority queues
L'etat, c'est moi: State and the Environment Model
Dining philosophers: an example of state and message passing...
Streams and delayed data structures
Handouts
Symbolic differentiation and pattern matching