Wizard Book n. Hal Abelson's, Jerry Sussman's and Julie Sussman's Structure and Interpretation of Computer Programs (MIT Press, 1984; ISBN 0-262-01077-1), an excellent computer science text used in introductory courses at MIT. So called because of the wizard on the jacket. One of the bibles of the LISP/Scheme world. Also, less commonly, known as the Purple Book.

(from The New Hacker's Dictionary, 2nd edition)

The SICP 2nd Edition, 1996 enjoys an online Unofficial Texinfo Format hosted at (as of November 2022) and at Internet Archive, but note pagination does not match the physical book. Thank you MIT and authors and reformatters.

Also available are the sicp-video-lectures, a series of lectures given to employees at HP. The lectures were filmed before the 2nd edition of the book, so some of the examples are different, but this is an invaluable resource. There is a map between the 2nd edition of the book and the videos: sicp-text-to-video-map.

Other lectures about SICP are available at ArsDigita University.

There was some talk about distributing them in a .torrent.

Brian Harvey's lectures for Berkeley's CS 61A, taught using the second edition of the book, are available online, alongside some notes.

This is not necessarily a book about Scheme (though, you will learn scheme in it), but more about programming in general, and its processes. This book will not only make you a better scheme programmer, but it will make you a better programmer in general.

Virtual Study Group

There is a Virtual Study Group found at that rather dormant save for spam (as of Dec 2007). Also there is an IRC channel found on freenode called #sicp. (Note: The IRC channel is empty as of 2009-11-11.) This channel is logged on SICP-Solutions is the page where you can post solutions to problems in the book.

Implementation Specific Considerations

(runtime) primitive

In exercise 1.22, you'll need a "(runtime)" primitive. Not every implementation has it. You can use the following similar functions:


 (define (runtime) (tms:clock (times)))
 ;; returns current time, in seconds
 (define (runtime)
   (define now (gettimeofday))
   (+ (car now) (/ (cdr now) 1000000.)))


 (define (runtime) (current-milliseconds))