HOME

TheInfoList



OR:

''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 Applied science, practical discipli ...
textbook by
Massachusetts Institute of Technology The Massachusetts Institute of Technology (MIT) is a private land-grant research university in Cambridge, Massachusetts. Established in 1861, MIT has played a key role in the development of modern technology and science, and is one of the ...
professors Harold Abelson 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. H ...
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 mathemati ...
, abstraction, modularity, 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 ...
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 publish ...
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 Applied science, practical discipli ...
. 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 dialect of Lisp. It also uses a virtual
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 fro ...
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 ...
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 tha ...
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 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 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 uni ...
'' 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 (SICM)'', another book that uses Scheme as an instructional element, by Gerald Jay Sussman and Jack Wisdom * '' Software Design for Flexibility'', by Chris Hanson and Gerald Jay Sussman * '' How to Design Programs (HtDP)'', which intends to be a more accessible book for introductory Computer Science, and to address perceived incongruities in SICP * '' Essentials of Programming Languages (EoPL)'', a book for Programming Languages courses


See also

* '' Structure and Interpretation of Computer Programs, JavaScript Edition'' * '' Compilers: Principles, Techniques, and Tools'' - Also known as The Dragon Book


References


External links

*
Video lectures

Book compiled from TeX source

Structure 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)