Institute for Software Research
School of Computer Science, Carnegie Mellon University
The Essence of Program Semantics Visualizers:
Josh Pollock*, Grace Oh**, Eunice Jun+,
This paper was presented at PLATEAU 2020:
A program semantics visualizer (PSV) helps illuminate a language's semantics by explaining the runtime execution of programs. PSVs are often used in introductory programming (CS1) courses to help introduce a notional machine, an abstraction of the computer that executes the language. But what information should PSVs present to fully explain such notional machines?
In this paper we propose a three-axis model to assess the design of PSVs that visualize execution traces. PSVs should help users by clearly answering three questions: What is the machine's cofiguration at each execution step? Why did an execution step take place? How did an execution step change the machine's configuration? We demonstrate our model's utility for assessing PSVs by explaining why, in actual classroom use, instructors have resorted to manually extending Python Tutor's visualizations.
*Computer Science and Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Cambridge, MA