Source is a family of languages, designed for the textbook Structure and Interpretation of Computer Programs, JavaScript Adaptation (SICP JS) and supported by the Source Academy system. The languages are called Source §1, Source §2, Source §3 and Source §4, corresponding to the respective chapters 1, 2, 3 and 4 of the textbook. Each previous Source language is a sublanguage of the next, and all Source languages are sublanguages of JavaScript. (Chapter 5 does not require any features beyond Source §4.) This webpage contains the description of the Source languages and the libraries they come with.
Source §1
Source §2
Source §3
Source §4
Style guide
The Source Style Guide gives general recommendations on how to write your programs so that they are readable by the members of our learning community.
Language variants
Source §1 Lazy
Source §1 WebAssembly
Source §1 Typed
Source §2 Lazy
Source §2 Typed
Source §3 Non-Det
Source §3 Concurrent
Source §3 Typed
Source §4 GPU
Source §4 Typed
Source §4 Explicit-Control
Specifications
The following technical documents specify the languages and components of the Source Academy.