Fog Creek Software
Discussion Board


I just finished reading SICP for the second time, and wow what a great book. I think I was able to appreciate it more this time because I had a bit more background in math and computer science.

In that sense, it reminded me of Michael Spivak's Calculus: now that I have some Analysis under my belt I can look at it as a fantastic book about rigorous mathematics, but coming into it with no background I had to work _very_ hard to get anything out of it.

For those not familiar with SICP, in the course of 5 chapters you will:

  - Write a symbolic algebra system
  - Learn a number of different programming techniques (wherein you may realize that object-oriented programming is just one small tool in a huge toolkit)
  - Learn and implement methods for concurrent programming
  - Build a database system
  - Write a garbage collected Scheme compiler
  - Learn a bunch of other stuff like huffman encoding, graphics programming, etc.

I can name a few math books that evoke this same sense of "greatness": eg. Hardy's A Course of Pure Mathematics, the aforementioned Calculus by Spivak, Courant's What is Mathematics?

But is there another computer science book that even comes close to SICP?

Sunday, August 22, 2004

For those not familiar with SICP, the full name is "Structure and Interpretation of Computer Programs."

More details, and the full text, are available here:

Ged Byrne
Sunday, August 22, 2004

I'm not a great programmer/read a whole lot on computer science, but when SICP is mentioned, you usually hear of the recently published Concepts, Techniques, and Models of Computer Programming, and of Russel & Norvig's book on AI


Norvig & Russell:

Sunday, August 22, 2004

Ha, Spivak and SICP do seem to go together. I'm sure you caught the SICP video lectures?

I only wish it had macros, to make new languages really look like part of the language. (Without building a new interpreter.) I understand the reasoning behind it though; SICP Scheme is more interested in cleanliness than multiparadigm programming, and it's certainly a simple language to teach.

Someone mentioned Russell/Norvig's AIMA, and Norvig's PAIP is a good addition to the list too. I don't know if you can call PAIP CS; it's more about implementing one's interesting ideas efficiently using a specific (powerful) programming language. But it certainly extends on many of the things in SICP; for example, in its chapter on implementing Scheme, it adds in continuations.

You might prefer Minsky's "Computation: Finite and Infinite Machines" to the Sipser and Hopcroft books, if you're interested in that area. I nagged him once to finally scan it in and release it free, but he's procrastinating. (Doesn't someone have a reasonable scanner at MIT?)

Tayssir John Gabbour
Monday, August 23, 2004

Incidentally, if you like Scheme, I'm sure you'll enjoy this little talk by one of the PLT Scheme guys:

Tayssir John Gabbour
Monday, August 23, 2004

*  Recent Topics

*  Fog Creek Home