Structure and Interpretation of Computer Programs, JavaScript Adaptation
Structure and Interpretation of Computer Programs, JavaScript Adaptation (SICP JS) is an adaptation of the computer science textbook Structure and Interpretation of Computer Programs (SICP). It teaches fundamental principles of computer programming, including recursion, abstraction, modularity, and programming language design and implementation. While the original version of SICP uses the programming language Scheme, this adaptation uses the programming language JavaScript.
![]() cover of the online edition | |
Author | Harold Abelson and Gerald Jay Sussman with Julie Sussman; adapters: Martin Henz and Tobias Wrigstad with Chan Ger Hean, He Xinyue, Liu Hang, Feng Piaopiao, Jolyn Tan and Wang Qian |
---|---|
Subject | Computer science |
Genre | Textbook |
Publisher | National University of Singapore |
Publication date | 2012 (1st ed.), 2019 (current public release) |
Pages | 718 |
Website | source-academy |
The National University of Singapore published draft editions online since 2012, and a first public release on December 13, 2019. As of 2021, the book is continuously updated and improved by the community of its readers.[1] It has been used in NUS's introductory course in computer science. As its original, SICP JS focuses on discovering general patterns for solving specific problems, and building software systems that make use of those patterns.[2]
Content
The book describes computer science concepts using Source, a series of sublanguages of JavaScript. It also uses a virtual register machine and assembler to implement JavaScript interpreters and compilers.
License
The text of the book is licensed under a Creative Commons Attribution NonCommercial ShareAlike 4.0 License, while the programs are licensed under the GNU Public Licence 3.0.
Origin
SICP JS has been used in the course CS1101S[3] at the National University of Singapore (NUS) since 2012.[4]
Differences to the original textbook
While the book focuses on principles, models and abstractions for programming rather than specific programming languages, all examples in the original version are written in the programming language Scheme. SICP JS uses the language JavaScript instead of Scheme. Since JavaScript shares its functional core with Scheme, the adaptation is straightforward and literal in most places. Scheme's homoiconicity is replaced by references to an explicit parser in Chapters 4 and 5.
Sources
Source is a series of sublanguages of JavaScript, originally inspired by JavaScript: The Good Parts., Douglas Crockford. It comprises the languages Source §1, Source §2, Source §3 and Source §4, corresponding to the respective chapters of SICP JS. Each language is a sublanguage of the next, and designed to contain only features needed by the respective chapter. These languages are implemented by the Source Academy,[5] a web-based programming environment that features various tools to support the readers of SICP JS.
References
- "SICP JS on github". NUS. 2019. Retrieved 2019-12-23.
- Harvey, B (2011), "Why SICP matters?", The 150th anniversary of MIT, Boston Globe.
- "Department of Computer Science; CS1101S Programming Methodology". NUS. Fall 2019. Retrieved 2020-07-17.
- "Structure and Interpretation of Computer Programs, JavaScript Adaptation". NUS. 2019. Retrieved 2020-07-17.
- "Source Academy". NUS. 2019. Retrieved 2020-07-17.