Snapdown: A Text-Based Snapshot Diagram Language for Programming Education Daniel Whatley Max Goldman Robert C. Miller MIT CSAIL MIT CSAIL MIT CSAIL Cambridge, MA Cambridge, MA Cambridge, MA
[email protected] [email protected] [email protected] Abstract—Snapshot diagrams, which visualize in-memory pro- gram state, are frequently used in programming education to cities -> ( List<String> demonstrate new concepts and help students develop a bet- 0 -> (String "Boston"), ter understanding of program functionality. In this paper we 1 -> (String "Bogota"),´ introduce Snapdown, a textual language for drawing snapshot 2 -> (String "Barcelona") diagrams, designed for use by both students and instructors of ) programming courses. Snapdown is designed with an emphasis on learnability and simplicity: both to be picked up by students in a classroom setting in a matter of minutes, and to enable creation and maintenance of diagrams in instructional content with Fig. 1: A snapshot diagram that shows a list of three String objects. minimal overhead. We introduce several use cases of Snapdown Left: Snapdown syntax, right: corresponding diagram. and describe the design and features of its textual language. We also describe a deployment of Snapdown during two semesters of emergency remote teaching in 6.031 Software Construction at support continuous changes in diagram content and structure. MIT, a software engineering course intended for sophomore- and In addition, some of these methods have steep learning curves, junior-level undergraduate students. Index Terms—snapshot diagrams, textual language, program- and are not feasible for students to use in completing course- ming education work. Programming courses typically contain tens or hundreds of code snippets, examples, and exercises, and several chal- I.