Source

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.

Specification of Source §1

Specification of Source §2

Specification of Source §3

Specification of Source §4

Specification of Source §1 Lazy

Specification of Source §1 WebAssembly

Specification of Source §1 Typed

Specification of Source §2 Lazy

Specification of Source §2 Typed

Specification of Source §3 Non-Det

Specification of Source §3 Concurrent

Specification of Source §3 Typed

Specification of Source §4 GPU

Specification of Source §4 Typed

Specification of Source §4 Explicit-Control

Specification of Source §1 Infinite Loop Detection

Specification of Source §2 Stepper

Specification of Source §3 Type Inference