Martin Henz - Shrinking JavaScript for an SICP-based First-Year Course


National University of Singapore (NUS)


Gerald J. Sussman
Joint work with Boyd Anderson, Kok-Lim Low, and Daryl Tan.
In teaching and learning programming at first-year-university level, simple languages with small feature sets are preferable over industry-strength languages with extensive feature sets, to reduce the learners' cognitive load. At the same time, there is increasing pressure to familiarize students with mainstream languages early in their learning journey, and these languages accumulate features as years go by. In response to these competing requirements, we developed Source, a collection of JavaScript sublanguages with features sufficient to express all concepts of the textbook Structure and Interpretation of Computer Programs by Hal Abelson and Gerald Jay Sussman that we use in CS1101S, the required CS1 course for Computer Science majors at the National University of Singapore (NUS). These languages are supported by the Source Academy, a web-based programming environment custom-built for learning at beginner's level, which provides transpiler, interpreter, virtual machine, and algebraic-stepper-based implementations of the languages, and includes tracing, debugging, visualization, and smart-editor features. After motivating the choice of JavaScript, this talk describes the Source languages and their implementations, and features practical demonstrations of the Source Academy and a few libraries that help us in our course. We report our experiences in developing and improving the languages and the environment over a period of four years, teaching a total of 2228 computer science first-year students at NUS.

For those who might wish to attend remotely, the seminar will also be on Zoom: