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