I began a quest to read the whole SICP book (Structure and Interpretation of Computer Programs, available online here).

The plan is to:

  1. Read the book
  2. See all the video lectures by Sussman and Abelson themselves (available from here)
  3. Do most of the interesting exercises in the book
  4. Do some of the larger projects listed here and here

In order to stay faithful to this endeavor, I will post into this SICP category of my blog the "reading notes" - insights gained from the book, solutions to exercises and so on.

A minor twist: I will do all the exercises and projects in Common Lisp, instead of Scheme. The differences aren't big, but I generally prefer CL to Scheme. Besides, this will ensure that I won't just copy the code from the book mindlessly, but will rewrite it in CL - which will give me another chance to think it through.

There are several differences between Scheme and Common Lisp. Most of them are very minor, but there is a major one that is worth attention - Scheme is a single namespace Lisp (Lisp-1), while Common Lisp has two separate namespaces, for non-functions and for functions (Lisp-2). This is summed up nicely here, with a much more thorough discussion here, so I won't dwell on the topic, but I might refer to it later when I present actual code.

Update (31.08.2007): I've decided to implement some of the exercises in Scheme, using PLT Scheme. Funny how quickly preferences change. While this post states that I prefer CL to Scheme, it kind-of turned around once I discovered PLT Scheme and worked with it a bit. Using both languages interchangeably will give me a good base of comparison.