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 OctDisplayed time zone: Central Time (US & Canada) change
13:50 - 15:10 | |||
13:50 20mTalk | 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 20mTalk | 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 20mTalk | 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 15mTalk | 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 |