Structure and Interpretation of Computer Programs (SICP)

“Structure and Interpretation of Computer Programs,” known almost universally as SICP, is a textbook by Harold Abelson and Gerald Jay Sussman, with Julie Sussman, first published by MIT Press in the mid-1980s. The MIT-hosted online edition makes the complete text freely available and lists its authors and Creative Commons licensing.

The book teaches programming not as a catalog of language features but as a discipline of controlling complexity through abstraction. It uses the Scheme dialect of LISP as its vehicle, precisely because Scheme is small enough that the language itself never gets in the way of the ideas being taught.

SICP is organized around a few big themes: building abstractions with procedures and data, the power of higher-order functions, the use of recursion and process shapes, and the construction of interpreters and evaluators, culminating in students writing an evaluator for the very language they are learning. This “the program that runs programs” approach gave readers an unusually deep view of how computation works.

For many years SICP was the basis of MIT’s introductory course 6.001, and it spread far beyond that classroom. It is widely regarded as one of the most influential computer science texts ever written, and its emphasis on abstraction and functional thinking continues to shape how programming is taught.