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 formerly used as the textbook for MIT's introductory course in computer science. 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.
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:
The Elements of Programming
Procedures and the Processes They Generate
Formulating Abstractions with Higher-Order Procedures
Introduction to Data Abstraction
Hierarchical Data and the Closure Property
Symbolic Data
Multiple Representations for Abstract Data
Systems with Generic Operations
Assignment and Local State
The Environment Model of Evaluation
Modeling with Mutable Data
Concurrency: Time Is of the Essence
Streams
The Metacircular Evaluator
Variations on a Scheme – Lazy Evaluation
Variations on a Scheme – Nondeterministic Computing
Logic Programming
Designing Register Machines
A Register-Machine Simulator
Storage Allocation and Garbage Collection
The Explicit-Control Evaluator
Compilation
Several 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
The book is licensed under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.
The book was used as the textbook for MIT's former introductory programming course, 6.
This page is automatically generated and may contain information that is not correct, complete, up-to-date, or relevant to your search query. The same applies to every other page on this website. Please make sure to verify the information with EPFL's official sources.
We introduce formal verification as an approach for developing highly reliable systems. Formal verification finds proofs that computer systems work under all relevant scenarios. We will learn how to u
This advanced Bachelor/Master level course will cover fundamentals and approaches at the interface of biology, chemistry, engineering and computer science for diverse fields of synthetic biology. This
Understanding of the principles and applications of functional programming, the fundamental models of program
execution, application of fundamental methods of program composition, meta-programming thr
In computing, a meta-circular evaluator (MCE) or meta-circular interpreter (MCI) is an interpreter which defines each feature of the interpreted language using a similar facility of the interpreter's host language. For example, interpreting a lambda application may be implemented using function application. Meta-circular evaluation is most prominent in the context of Lisp. A self-interpreter is a meta-circular interpreter where the interpreted language is nearly identical to the host language; the two terms are often used synonymously.
In software engineering and computer science, abstraction is: The process of removing or generalizing physical, spatial, or temporal details or attributes in the study of objects or systems to focus attention on details of greater importance; it is similar in nature to the process of generalization; the creation of abstract concept-objects by mirroring common features or attributes of various non-abstract objects or systems of study – the result of the process of abstraction.
Scheme is a dialect of the Lisp family of programming languages. Scheme was created during the 1970s at the MIT Computer Science and Artificial Intelligence Laboratory (MIT AI Lab) and released by its developers, Guy L. Steele and Gerald Jay Sussman, via a series of memos now known as the Lambda Papers. It was the first dialect of Lisp to choose lexical scope and the first to require implementations to perform tail-call optimization, giving stronger support for functional programming and associated techniques such as recursive algorithms.
Computer-graders have been in regular use in the context of MOOCs (Massive Open Online Courses). The automatic grading of programs presents an opportunity to assess and provide tailored feedback to large classes, while featuring at the same time a number o ...
The calculation of the electronic structure of chemical systems, necessitates computationally expensive approximations to the time-independent electronic Schrödinger equation in order to yield static properties in good agreement with experimental results. ...
EPFL2019
, , ,
Routing multiplexers based on pass-transistors or transmission gates are an essential components in many digital integrated circuits. However, whatever structure is employed, CMOS multiplexers have two major limitations: 1) their delay is linearly related ...