ArticleslgStudy

computer science

Structure and Interpretation of Computer Programs

Structure and Interpretation of Computer Programs is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Structure and Interpretation of Computer Programs rather than just read about it. In short: Structure and Interpretation of Computer Programs (SICP) is a computer science textbook by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman with Julie Sussman. It is known as the "Wizard Book" in hacker culture.

Structure and Interpretation of Computer Programs — main illustration
Structure and Interpretation of Computer Programs — illustration

Key takeaways

  • Structure and Interpretation of Computer Programs belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Structure and Interpretation of Computer Programs to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Structure and Interpretation of Computer Programs from memory before moving on to harder problems.

Reference excerpt

Structure and Interpretation of Computer Programs (SICP) is a computer science textbook by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman with Julie Sussman. It is known as the "Wizard Book" in hacker culture. It teaches fundamental principles of computer programming, including recursion, abstraction, modularity, and programming language design and implementation. MIT Press published the first edition in 1984, and the second edition in 1996. It was used as the textbook for MIT's introductory course in computer science from 1984 to 2007. SICP focuses on discovering general patterns for solving specific problems, and building software systems that make use of those patterns. MIT Press published a JavaScript version of the book in 2022.

Content The book describes computer science concepts using Scheme, a dialect of Lisp. It also uses a virtual register machine and assembler to implement Lisp interpreters and compilers. Topics in the books are:

Chapter 1: Building Abstractions with Procedures The Elements of Programming Procedures and the Processes They Generate Formulating Abstractions with Higher-Order Procedures

Chapter 2: Building Abstractions with Data Introduction to Data Abstraction Hierarchical Data and the Closure Property Symbolic Data Multiple Representations for Abstract Data Systems with Generic Operations

Chapter 3: Modularity, Objects, and State Assignment and Local State The Environment Model of Evaluation Modeling with Mutable Data Concurrency: Time Is of the Essence Streams

Chapter 4: Metalinguistic Abstraction The Metacircular Evaluator Variations on a Scheme – Lazy Evaluation Variations on a Scheme – Nondeterministic Computing Logic Programming

Chapter 5: Computing with Register Machines Designing Register Machines A Register-Machine Simulator Storage Allocation and Garbage Collection The Explicit-Control Evaluator Compilation

Characters Several humorously-named fictional characters appear in the book:

Alyssa P. Hacker, a Lisp hacker 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) license.

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.

Reception Byte recommended SICP in 1986 "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. A review of SICP as an undergraduate textbook by Philip Wadler noted the weaknesses of the Scheme language as an introductory language for a computer science course. Wadler criticized in particular the lack of pattern matching, obscuring equational reasoning and making the teaching of proofs harder; the lack of algebraic data types in Scheme and the over-reliance on cons pairs for both code and data representation, which can confuse beginning students; and the choice of strict instead of lazy evaluation as the standard evaluation strategy.

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 deficiencies in SICP Essentials of Programming Languages (EoPL), a book for Programming Languages courses

See also Compilers: Principles, Techniques, and Tools – also known as The Dragon Book

References

External links Official website Video lectures Book compiled from TeX source Structure and Interpretation of Computer Programs. Interactive Version

Illustrations

Structure and Interpretation of Computer Programs illustration

Worked examples

Example 1 — a first encounter with Structure and Interpretation of Computer Programs

Start with the simplest possible case. Write down what Structure and Interpretation of Computer Programs claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Structure and Interpretation of Computer Programs before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Structure and Interpretation of Computer Programs ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Structure and Interpretation of Computer Programs

In research
Structure and Interpretation of Computer Programs appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Structure and Interpretation of Computer Programs in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Structure and Interpretation of Computer Programs is common in secondary-school and first-year university syllabi. It links to neighbouring topics 1984 non-fiction books, 1996 non-fiction books, Computer programming books, so understanding it makes those chapters shorter.
In everyday life
Look for Structure and Interpretation of Computer Programs outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Structure and Interpretation of Computer Programs in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Structure and Interpretation of Computer Programs means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Structure and Interpretation of Computer Programs out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Structure and Interpretation of Computer Programs in simple terms?

Structure and Interpretation of Computer Programs (SICP) is a computer science textbook by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman with Julie Sussman. It is known as the "Wizard Book" in hacker culture.

Why does Structure and Interpretation of Computer Programs matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Structure and Interpretation of Computer Programs?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Structure and Interpretation of Computer Programs.

Tags

  • 1984 non-fiction books
  • 1996 non-fiction books
  • Computer programming books
  • Computer science books
  • Creative Commons-licensed books
  • Lisp (programming language)
  • Massachusetts Institute of Technology
  • Scheme (programming language)

Keep exploring