[ecoop-info] SICP JS going public!

Tobias Wrigstad tobias.wrigstad at it.uu.se
Fri Dec 13 07:02:20 CET 2019

It’s our pleasure to announce the initial public release of

Structure and Interpretation of Computer Programs, JavaScript Adaptation

A community effort led by Martin Henz and Tobias Wrigstad, this project provides the full content of the textbook classic Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman with Julie Sussman, using sublanguages of JavaScript, instead of the language Scheme. We provide our SICP JS adaptation in three editions: a mobile-friendly interactive web edition, an interactive PDF edition and an e-book edition. Readers of the textbook can click on the programs and run them using the Source Academy [https://sourceacademy.nus.edu.sg/playground], a web-based programming environment that supports a collection of purpose-built language implementations of the JavaScript sublanguages Source §1, Source §2, Source §3 and Source §4 [https://sicp.comp.nus.edu.sg/source/], each of which are designed to serve the respective chapters of SICP JS.

SICP JS has been used by the National University of Singapore in the computer science freshman programming methodology course CS1101S [https://www.comp.nus.edu.sg/~cs1101s/] since 2012, and is maintained by the CS1101S community as an open source project. We share it with
educators and learners and welcome contributions and suggestions.


Some highlights of SICP JS and the Source Academy:

- Source §1 and Source §2 come with a stepper tool that supports the substitution model presented in Chapter 1 of SICP.
  * https://tinyurl.com/SICPJS-stepper

- Source §2 and Source §3 are supported by purpose-built visualization tools for the box-and-pointer [1] diagrams of Chapter 2 and the environment model [2] diagrams of Chapter 3.
  * [1] https://tinyurl.com/SICPJS-box-and-pointer
  * [2] https://tinyurl.com/SICPJS-env-diagram

- All implementations of Source feature proper tail calls [3], required by ECMAScript 2015, consistent with Chapter 1 of SICP (iterative processes).
  * [3] https://tinyurl.com/SICPJS-PTC

- Instead of using the homoiconicity of Scheme, Chapters 4 and 5 of SICP JS use a parse primitive [4] to support a metacircular evaluator [5] and a register machine [6] for Source.
  * [4] https://tinyurl.com/SICPJS-parse
  * [5] https://tinyurl.com/SICPJS-MCE-factorial
  * [6] https://tinyurl.com/SICPJS-RM

- Besides support for the "picture language" of SICP Section 2.2.4 [7], the Source Academy provides libraries for curve graphics [8], sound processing [9] and image and video processing [10], to enhance student engagement. A transpiler supports Source on LEGO Mindstorms (EV3) [11].
  * [7] https://tinyurl.com/SICPJS-hearts
  * [8] https://tinyurl.com/SICPJS-circle
  * [9] https://tinyurl.com/SICPJS-siren
  * [10] https://tinyurl.com/SICP-distortion
  * [11] https://github.com/source-academy/sourcetoes5

- Some fun examples:
  * A spiral with a twist, by Yuki Akizuki ---- https://tinyurl.com/SICPJS-twist

  * Bohemian Rhapsody cover, by Siddarth Nandanahosur Suresh ---- https://tinyurl.com/SICPJS-rhapsody

  * Times tables using the curves library ---- https://tinyurl.com/SICPJS-timestables

  * NUS Sumobot 2018 (video), a robotics contest conducted in Source ---- https://youtu.be/-8aZNwjWp7c

How to get involved?

The adaptation is a long-term effort involving dozens of contributors [https://sourceacademy.nus.edu.sg/contributors]. While the core sections of all chapters come with clickable and working Source programs, several sections and subsections are "work-in-progress" and not all their programs are clickable, indicated in red under the headline. These sections and subsections are starting points [https://github.com/source-academy/sicp/labels/WIP%20Section] for you to get involved! You can also join in the effort [https://github.com/source-academy/sicp/labels/Exercise%20solution] to provide high-quality solutions to the textbook exercises. And of course if you spot an error, please file an issue [https://github.com/source-academy/sicp/issues].

Martin Henz and Tobias Wrigstad

När du har kontakt med oss på Uppsala universitet med e-post så innebär det att vi behandlar dina personuppgifter. För att läsa mer om hur vi gör det kan du läsa här: http://www.uu.se/om-uu/dataskydd-personuppgifter/

E-mailing Uppsala University means that we will process your personal data. For more information on how this is performed, please read here: http://www.uu.se/en/about-uu/data-protection-policy

More information about the ecoop-info mailing list