title: "Omnicode: A Novice-Oriented Live Programming Environment with Always-On Run-Time Value Visualizations"
authors: Hyeonsu Kang and Philip J. Guo
venue: ACM Symposium on User Interface Software and Technology (UIST)
year: 2017
links:
- Blog post
tweet: Omnicode constantly visualizes the full history of all numeric values in your code as you're coding
abstract: >
Visualizations of run-time program state help novices form proper
mental models and debug their code. We push this technique to the
extreme by posing the following question: What if a live
programming environment for an imperative language always displays the
entire history of all run-time values for all program variables all
the time? To explore this question, we built a prototype live IDE
called Omnicode ("Omniscient Code") that continually runs the user's
Python code and uses a scatterplot matrix to visualize the entire
history of all of its numerical values, along with meaningful numbers
derived from other data types. To filter the visualizations and hone
in on specific points of interest, the user can brush and link over
the scatterplots or select portions of code. They can also zoom in to
view detailed stack and heap visualizations at each execution step. An
exploratory study on 10 novice programmers discovered that they found
Omnicode to be useful for debugging, forming mental models, explaining
their code to others, and discovering moments of serendipity that
would not have been likely within an ordinary IDE.
bibtex: >
@inproceedings{KangUIST2017,
author = {Kang, Hyeonsu and Guo, Philip J.},
title = {Omnicode: A Novice-Oriented Live Programming Environment with Always-On Run-Time Value Visualizations},
booktitle = {Proceedings of the 30th Annual ACM Symposium on User Interface Software and Technology},
series = {UIST '17},
year = {2017},
isbn = {978-1-4503-4981-9},
location = {Qu\&\#233;bec City, QC, Canada},
pages = {737--745},
numpages = {9},
url = {http://doi.acm.org/10.1145/3126594.3126632},
doi = {10.1145/3126594.3126632},
acmid = {3126632},
publisher = {ACM},
address = {New York, NY, USA},
keywords = {always-on visualizations, live programming},
}