SPLASH 2021
Sun 17 - Fri 22 October 2021 Chicago, Illinois, United States
Wed 20 Oct 2021 14:30 - 14:50 at Zurich E - Session 2

The first two chapters of the introductory computer science textbook \emph{Structure and Interpretation of Computer Programs, JavaScript Adaptation (SICP JS)}, use a subset of JavaScript called \emph{Source §2}. The book introduces the reduction-based ‘‘substitution model’’ as a first mental model for the evaluation of Source §2 programs. To support the learner in adopting this mental model, we built an \emph{algebraic stepper}—a tool for visualizing the evaluation of Source §2 programs according to the model. As a sublanguage of JavaScript, Source §2 differs from other purely functional programming languages by using a statement-oriented syntax, with statement sequences, return statements, and block-scoped declarations. For the purpose of this tool description, we distill these distinguishing features—along with explicit recursion—into a Source §2 sublanguage that we call \emph{Source §0}, and focus on a stepper for this language. We formalize the substitution model of Source §0 as a lambda-calculus-style reduction semantics that handles explicit recursion by term graph rewriting and faithfully implements the JavaScript specification, when restricted to that language. Our implementation of the stepper represents term graphs by persistent data structures that maximize sharing and enable random access to all steps. This work presents the first reduction-based semantics for a JavaScript sublanguage and the first algebraic stepper for a language with return statements and block-scoped declarations. The tool supports the learner with step-level explanations, redex highlighting, and function-level skipping and can also be used for teaching the applicative-order-reduction lambda calculus.

Wed 20 Oct

Displayed time zone: Central Time (US & Canada) change

13:50 - 15:10
Session 2SPLASH-E at Zurich E
13:50
20m
Talk
PaCon: A Symbolic Analysis Approach for Tactic-Oriented Clustering of Programming Submissions
SPLASH-E
Yingjie Fu Peking University, Jonathan Osei-Owusu University of Illinois at Urbana-Champaign, Angello Astorga University of Illinois at Urbana-Champaign, Zirui Neil Zhao University of Illinois at Urbana-Champaign, Wei Zhang Peking University, Tao Xie Peking University
DOI
14:10
20m
Talk
Shrinking JavaScript for CS1
SPLASH-E
Boyd Anderson National University of Singapore, Martin Henz National University of Singapore, Kok-Lim Low National University of Singapore, Daryl Tan National University of Singapore
DOI
14:30
20m
Talk
A Stepper for a Functional JavaScript Sublanguage
SPLASH-E
Martin Henz National University of Singapore, Thomas Tan National University of Singapore, Zachary Chua National University of Singapore, Peter Jung National University of Singapore, Yee-Jian Tan National University of Singapore, Xinyi Zhang National University of Singapore, Jingjing Zhao National University of Singapore
DOI
14:50
15m
Talk
Course Experience Report: Full-Class Compiler Collaboration
SPLASH-E
Joe Gibbs Politz University of California at San Diego, Yousef Alhessi University of California at San Diego
DOI