  Program visualizations help to form useful mental models of how programs
work, and to reason and debug code. But these visualizations exist at a fixed
level of abstraction, e.g., line-by-line. In contrast, programmers switch
between many levels of abstraction when inspecting program behavior. Based on
results from a formative study of hand-designed program visualizations, we
designed CrossCode, a web-based program visualization system for JavaScript
that leverages structural cues in syntax, control flow, and data flow to
aggregate and navigate program execution across multiple levels of abstraction.
In an exploratory qualitative study with experts, we found that CrossCode
enabled participants to maintain a strong sense of place in program execution,
was conducive to explaining program behavior, and helped track changes and
updates to the program state.

Human-Computer Interaction