Structure and Interpretation of Computer Programs
JavaScript Edition
by Abelson, Sussman, Henz, Wrigstad
ISBN: 9780262367639 | Copyright 2022
Instructor Requests
A new version of the classic and widely used text adapted for the JavaScript programming language.
Since the publication of its first edition in 1984 and its second edition in 1996, Structure and Interpretation of Computer Programs (SICP) has influenced computer science curricula around the world. Widely adopted as a textbook, the book has its origins in a popular entry-level computer science course taught by Harold Abelson and Gerald Jay Sussman at MIT. SICP introduces the reader to central ideas of computation by establishing a series of mental models for computation. Earlier editions used the programming language Scheme in their program examples. This edition has been adapted to JavaScript.
The first three chapters of SICP cover programming concepts that are common to all modern high-level programming languages. Chapters four and five, which used Scheme to formulate language processors for Scheme, required significant revision. Chapter four offers new material, in particular an introduction to the notion of program parsing. The evaluator and compiler in chapter five introduce a subtle stack discipline to support return statements (a prominent feature of statement-oriented languages) without sacrificing tail recursion.
The JavaScript programs included in the book run in any implementation of the language that complies with the ECMAScript 2020 specification, using the JavaScript package SICP provided on the MIT Press website.
Expand/Collapse All | |
---|---|
Contents (pg. ix) | |
Foreword (pg. xiii) | |
Foreword to Structure and Interpretation of Computer Programs, 1984 (pg. xvii) | |
Preface (pg. xxi) | |
Prefaces to Structure and Interpretation of Computer Programs, 1996&1984 (pg. xxiii) | |
Acknowledgments (pg. xxvii) | |
1: Building Abstractions with Functions (pg. 1) | |
1.1 The Elements of Programming (pg. 3) | |
1.2 Functions and the Processes They Generate (pg. 26) | |
1.3 Formulating Abstractions with Higher-Order Functions (pg. 48) | |
2: Building Abstractions with Data (pg. 69) | |
2.1 Introduction to Data Abstraction (pg. 72) | |
2.2 Hierarchical Data and the Closure Property (pg. 84) | |
2.3 Symbolic Data (pg. 124) | |
2.4 Multiple Representations for Abstract Data (pg. 147) | |
2.5 Systems with Generic Operations (pg. 163) | |
3: Modularity, Objects, and State (pg. 189) | |
3.1 Assignment and Local State (pg. 190) | |
3.2 The Environment Model of Evaluation (pg. 206) | |
3.3 Modeling with Mutable Data (pg. 222) | |
3.4 Concurrency: Time Is of the Essence (pg. 263) | |
3.5 Streams (pg. 280) | |
4: Metalinguistic Abstraction (pg. 317) | |
4.1 The Metacircular Evaluator (pg. 319) | |
4.2 Lazy Evaluation (pg. 360) | |
4.3 Nondeterministic Computing (pg. 373) | |
4.4 Logic Programming (pg. 398) | |
5: Computing with Register Machines (pg. 449) | |
5.1 Designing Register Machines (pg. 450) | |
5.2 A Register-Machine Simulator (pg. 468) | |
5.3 Storage Allocation and Garbage Collection (pg. 487) | |
5.4 The Explicit-Control Evaluator (pg. 499) | |
5.5 Compilation (pg. 519) | |
References (pg. 565) | |
Index (pg. 571) | |
List of Exercises (pg. 607) |
Harold Abelson
Gerald Jay Sussman
Martin Henz
Tobias Wrigstad
Instructors Only | |
---|---|
You must have an instructor account and submit a request to access instructor materials for this book.
|
eTextbook
Go paperless today! Available online anytime, nothing to download or install.
Features
|