What is SICP?
Structure and Interpretation of Computer Programs (SICP) is a programming textbook by Harold Abelson and Gerald Jay Sussman with Julie Sussman. It was published in 1984 with a second edition in 1996, and a JavaScript edition in 2022.
It was developed from lecture material for the introductory computer science course of the same name led by Abelson and Sussman at the Massachusetts Institute of Technology (MIT). Over one hundred universities are recorded as adopting it as a textbook; the actual number is likely much larger.
The book's insight is that computer language is a means of expressing ideas about how things are done. Programs should be written for people to read, and only incidentally for the machine. It teaches techniques to control complexity, separately from the algorithms and languages that might be used.
In practice, the book runs from arithmetic and procedures, through data and modularity, to building working interpreters: by the end, students write an interpreter for Scheme in Scheme.
SICP was also influential outside universities. For example, in 1986, Hewlett-Packard, then on the leading edge of computer technology, invited Abelson and Sussman to present their ideas to its employees in an intensive course. Or, in 1995, Brendan Eich, whose interest in Scheme came from reading SICP, was hired by Netscape with the promise of "doing Scheme" in the browser. The result was JavaScript. (Then, in 2022, MIT Press published a JavaScript edition of SICP.)
By the 2000s, SICP was recognised as less relevant for introductory teaching. Programs were less often built up from primitives by combination and abstraction. The parts were no longer simple and well understood; engineers had to work with hardware and software that were both complex and proprietary. Sussman reportedly called this "programming by poking".
However, SICP retains its place in programming culture: the original ideas still apply to those who create the languages and libraries that others use, those who build code from language primitives. It also offers an accessible introduction to functional programming (which it compares with other models), the challenge of 356 exercises, and a view of a world closer to the creation of the first programming languages than to today.
The Scheme and JavaScript books, and the Hewlett-Packard videos are available under a Creative Commons licence.