''Structure and Interpretation of Computer Programs'' (''SICP'') is a
computer science
Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (includin ...
textbook by
Massachusetts Institute of Technology
The Massachusetts Institute of Technology (MIT) is a Private university, private Land-grant university, land-grant research university in Cambridge, Massachusetts. Established in 1861, MIT has played a key role in the development of modern t ...
professors
Harold Abelson
Harold Abelson (born April 26, 1947) is the Class of 1922 Professor of Computer Science and Engineering in the Department of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology (MIT), a fellow of the Institute ...
and
Gerald Jay Sussman
Gerald Jay Sussman (born February 8, 1947) is the Panasonic Professor of Electrical Engineering at the Massachusetts Institute of Technology (MIT). He received his S.B. and Ph.D. degrees in mathematics from MIT in 1968 and 1973 respectively. ...
with Julie Sussman. It is known as the "Wizard Book" in
hacker culture
The hacker culture is a subculture of individuals who enjoy—often in collective effort—the intellectual challenge of creatively overcoming the limitations of software systems or electronic hardware (mostly digital electronics), to a ...
. It teaches fundamental principles of
computer programming
Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programming involves tasks such as anal ...
, including
recursion
Recursion (adjective: ''recursive'') occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathematic ...
,
abstraction
Abstraction in its main sense is a conceptual process wherein general rules and concepts are derived from the usage and classification of specific examples, literal ("real" or " concrete") signifiers, first principles, or other methods.
"An a ...
,
modularity
Broadly speaking, modularity is the degree to which a system's components may be separated and recombined, often with the benefit of flexibility and variety in use. The concept of modularity is used primarily to reduce complexity by breaking a s ...
, and
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming l ...
design
A design is a plan or specification for the construction of an object or system or for the implementation of an activity or process or the result of that plan or specification in the form of a prototype, product, or process. The verb ''to design'' ...
and
implementation
Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy.
Industry-specific definitions
Computer science
In computer science, an implementation is a real ...
.
MIT Press
The MIT Press is a university press affiliated with the Massachusetts Institute of Technology (MIT) in Cambridge, Massachusetts (United States). It was established in 1962.
History
The MIT Press traces its origins back to 1926 when MIT publ ...
published the first edition in 1984, and the second edition in 1996. It was formerly used as the textbook for MIT's introductory course in
computer science
Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (includin ...
. SICP focuses on discovering general patterns for solving specific problems, and building software systems that make use of those patterns.
MIT Press published the
JavaScript edition in 2022.
Content
The book describes computer science concepts using
Scheme A scheme is a systematic plan for the implementation of a certain idea.
Scheme or schemer may refer to:
Arts and entertainment
* ''The Scheme'' (TV series), a BBC Scotland documentary series
* The Scheme (band), an English pop band
* ''The Schem ...
, a dialect of
Lisp
A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech.
Types
* A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lispi ...
. It also uses a
virtual
Virtual may refer to:
* Virtual (horse), a thoroughbred racehorse
* Virtual channel, a channel designation which differs from that of the actual radio channel (or range of frequencies) on which the signal travels
* Virtual function, a programming ...
register machine
In mathematical logic and theoretical computer science a register machine is a generic class of abstract machines used in a manner similar to a Turing machine. All the models are Turing equivalent.
Overview
The register machine gets its name from ...
and
assembler
Assembler may refer to:
Arts and media
* Nobukazu Takemura, avant-garde electronic musician, stage name Assembler
* Assemblers, a fictional race in the ''Star Wars'' universe
* Assemblers, an alternative name of the superhero group Champions of A ...
to implement Lisp
interpreters
Interpreting is a translational activity in which one produces a first and final target-language output on the basis of a one-time exposure to an expression in a source language.
The most common two modes of interpreting are simultaneous interp ...
and
compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
s.
Characters
Several fictional characters appear in the book:
* Alyssa P. Hacker, a Lisp
hacker
A hacker is a person skilled in information technology who uses their technical knowledge to achieve a goal or overcome an obstacle, within a computerized system by non-standard means. Though the term ''hacker'' has become associated in popu ...
* Ben Bitdiddle
* Cy D. Fect, a "reformed C programmer"
* Eva Lu Ator
* Lem E. Tweakit
* Louis Reasoner, a loose reasoner
License
The book is licensed under a
Creative Commons
Creative Commons (CC) is an American non-profit organization and international network devoted to educational access and expanding the range of creative works available for others to build upon legally and to share. The organization has releas ...
Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.
Coursework
The book was used as the textbook for MIT's former introductory programming course, 6.001, from fall 1984 through its last semester, in fall 2007. Other schools also made use of the book as a course textbook.
Various versions of the JavaScript edition have been used by the
National University of Singapore
The National University of Singapore (NUS) is a national public research university in Singapore. Founded in 1905 as the Straits Settlements and Federated Malay States Government Medical School, NUS is the oldest autonomous university in th ...
since 2012 in the course CS1101S.
Reception
''
Byte
The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable unit ...
'' recommended SICP "for professional programmers who are really interested in their profession". The magazine said that the book was not easy to read, but that it would expose experienced programmers to both old and new topics.
Influence
SICP has been influential in computer science education, and several later books have been inspired by its style.
* ''
Structure and Interpretation of Classical Mechanics
''Structure and Interpretation of Classical Mechanics'' (''SICM'') is a classical mechanics textbook written by Gerald Jay Sussman and Jack Wisdom with Meinhard E. Mayer. The first edition was published by MIT Press in 2001, and a second edition ...
(SICM)'', another book that uses Scheme as an instructional element, by Gerald Jay Sussman and Jack Wisdom
* ''
Software Design for Flexibility
Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.
At the lowest programming level, executable code consists o ...
'', by Chris Hanson and Gerald Jay Sussman
* ''
How to Design Programs
''How to Design Programs'' (''HtDP'') is a textbook by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi on the systematic design of computer programs. MIT Press published the first edition in 2001, and the se ...
(HtDP)'', which intends to be a more accessible book for introductory Computer Science, and to address perceived incongruities in SICP
* ''
Essentials of Programming Languages
''Essentials of Programming Languages'' (''EOPL'') is a textbook on programming languages by Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes.
EOPL surveys the principles of programming languages from an operational perspective. It s ...
(EoPL)'', a book for Programming Languages courses
See also
* ''
''
* ''
Compilers: Principles, Techniques, and Tools'' - Also known as The Dragon Book
References
External links
*
Video lecturesBook compiled from TeX sourceStructure and Interpretation of Computer Programs. Interactive Version
{{Authority control
1984 non-fiction books
1996 non-fiction books
Computer science books
Computer programming books
Creative Commons-licensed books
Massachusetts Institute of Technology
Scheme (programming language)
Lisp (programming language)