graphical visualization. In future work, we will
approach the notional-machine challenge posed
by (Clements and Krishnamurthi, 2022) for the
targeted language family with the environment model
of SICP as the starting point. For this, we will extend
the environment model with control components to
obtain a proper notional machine for languages with
lexical scoping and first-class functions. We hope
that this machine will put us in a position to evolve
our environment model visualizer into a complete,
interactive notional machine visualizer: a tool for the
detailed execution visualization of programs written
in the targeted language family.
REFERENCES
Abelson, H. and Sussman, G. J. (1996). Structure and In-
terpretation of Computer Programs. MIT Press, Cam-
bridge, MA, 2nd edition. With Julie Sussman.
Abelson, H. and Sussman, G. J. (2022). Structure and Inter-
pretation of Computer Programs, JavaScript edition.
MIT Press, Cambridge, MA. adapted to JavaScript
by Martin Henz and Tobias Wrigstad, with Julie Suss-
man.
Anderson, B., Henz, M., and Low, K.-L. (2023).
Community-driven course and tool development for
CS1. In Proceedings of the 2023 ACM SIGCSE Tech-
nical Symposium on Computer Science Education,
page 7, Toronto, Canada. ACM.
Anderson, B., Henz, M., Low, K.-L., and Tan, D. (2021).
Shrinking JavaScript for CS1. In Proceedings of
the 2021 ACM SIG-PLAN SPLASH-E Symposium
(SPLASH-E ’21), pages 87–96, Chicago, IL. ACM.
Battista, G. D., Eades, P., Tamassia, R., and Tollis, I. G.
(1998). Graph Drawing: Algorithms for the Visual-
ization of Graphs. Prentice Hall, Saddle River, NJ.
Baxter, S., Nigam, R., Politz, J. G., Krishnamurthi, S., and
Guha, A. (2018). Putting in all the stops: execution
control for JavaScript. In PLDI 2018: Proceedings of
the 39th ACM SIGPLAN Conference on Programming
Language Design and Implementation, pages 30–45,
Philadelphia PA. ACM.
Clements, J. and Krishnamurthi, S. (2022). Towards a no-
tional machine for runtime stacks and scope: When
stacks don’t stack up. In ICER ’22: Proceedings of the
2022 ACM Conference on International Computing
Education Research, pages 206–222. ACM SIGCSE.
Danvy, O. (2004). A rational deconstruction of Landin’s
SECD machine. In Grelck, C., Huch, F., Michael-
son, G., and Trinder, P. W., editors, Implementation
and Application of Functional Languages, 16th In-
ternational Workshop, IFL 2004, L
¨
ubeck, Germany,
September 8-10, 2004, Revised Selected Papers, vol-
ume 3474 of LNCS, pages 52–71, New York. Springer.
Google (2023). Chrome DevTools. https://developer.
chrome.com/docs/devtools.
Guo, P. (2021). Ten million users and ten years later:
Python Tutor’s design guidelines for building scalable
and sustainable research software in academia. In
UIST ’21: The 34th Annual ACM Symposium on User
Interface Software and Technology, page 1235–1251,
New York. Association for Computing Machinery.
Harvey, B. and M
¨
onig, J. (2010). Bringing “no ceiling” to
Scratch: Can one language serve kids and computer
scientists? In Proceedings of Constructionism 2010,
pages 1–10, Bratislava, Slovakia. Library and Publish-
ing Centre, Faculty of Mathematics, Physics and In-
formatics, Comenius University.
Henz, M., Tan, T., Chua, Z., Jung, P., Tan, Y.-J., Zhang,
X., and Zhao, J. (2021). A stepper for a functional
JavaScript sublanguage. In Proceedings of the 2021
ACM SIG-PLAN SPLASH-E Symposium (SPLASH-E
’21), pages 71–81, Chicago, IL. ACM.
JetBrains (2023). IntelliJ IDEA. https://www.jetbrains.
com/idea.
Kunze, F., Smolka, G., and Forster, Y. (2018). For-
mal small-step verification of a call-by-value lambda
calculus machine. In Ryu, S., editor, Asian Sym-
posium on Programming Languages and Systems,
LNCS, volume 11275, pages 264–283, Cham, Switzer-
land. Springer International Publishing.
Landin, P. J. (1964). The mechanical evaluation of expres-
sions. The Computer Journal, 6:308–320.
Lavrenov, A. (2023). Konva.js—an HTML5 Canvas
JavaScript framework. https://konvajs.org.
Lipsitz, E. (2019). Java Visualizer—plugin for
IntelliJ IDEA. https://github.com/elipsitz/
java-visualizer-intellij-plugin.
Meta Platforms, Inc. (2023). React—a JavaScript library
for building user interfaces.
Microsoft (2023). Microsoft Visual Studio. https://
visualstudio.microsoft.com.
Mozilla (2023). Firefox JS Debugger. https://firefox-
source-docs.mozilla.org/devtools-user/debugger.
Racket team (2021). The stepper. https://docs.racket-lang.
org/stepper.
Rosenthal, J. (2019). Sdraw: Cons-cell diagrams with Pict.
https://docs.racket-lang.org/sdraw/index.html.
Sorva, J. (2012). Visual Program Simulation in Introduc-
tory Programming Education. PhD thesis, Aalto Uni-
versity, Espoo, Finland.
Sorva, J. (2013). Notional machines and introductory pro-
gramming education. ACM Transactions on Comput-
ing Education, 13(2):1–31.
Source Academy (2023a). Public site of Source Academy.
https://sourceacademy.org.
Source Academy (2023b). Software repository of frontend.
https://github.com/source-academy/frontend.
Source Academy (2023c). Software repository of js-slang.
https://github.com/source-academy/js-slang.
Source Academy (2023d). Source Academy GitHub orga-
nization. https://github.com/source-academy.
Visualizing Environments of Modern Scripting Languages
153