Omnicode: A Novice-Oriented Live Programming Environment with Always-On Run-Time Value Visualizations

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.

[1]  Peter Kulchyski and , 2015 .

[2]  Stephen H. Edwards,et al.  Algorithm Visualization: The State of the Field , 2010, TOCE.

[3]  Christopher D. Hundhausen,et al.  What You See Is What You Code: A "live" algorithm development and visualization environment for novice learners , 2007, J. Vis. Lang. Comput..

[4]  Michelene T. H. Chi,et al.  Self-Explanations: How Students Study and Use Examples in Learning To Solve Problems. Technical Report No. 9. , 1987 .

[5]  Brad A. Myers,et al.  Debugging reinvented , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[6]  John T. Stasko,et al.  Please address correspondence to , 2000 .

[7]  Amy J. Ko,et al.  Comprehension First: Evaluating a Novel Pedagogy and Tutoring System for Program Tracing in CS1 , 2017, ICER.

[8]  Juha Sorva,et al.  Notional machines and introductory programming education , 2013, TOCE.

[9]  Shaaron Ainsworth,et al.  The effects of self‐explaining when learning with text or diagrams , 2003 .

[10]  Jonathan J. Cadiz,et al.  Does continuous visual feedback aid debugging in direct-manipulation programming systems? , 1997, CHI.

[11]  Daniel H. H. Ingalls,et al.  Design Principles Behind Smalltalk , 2006 .

[12]  Philip J. Guo Online python tutor: embeddable web-based program visualization for cs education , 2013, SIGCSE '13.

[13]  Stephan Diehl,et al.  Live object exploration: Observing and manipulating behavior and state of Java objects , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[14]  Jeffrey Heer,et al.  A tour through the visualization zoo , 2010, ACM Queue.

[15]  Erkki Sutinen,et al.  Visualizing programs with Jeliot 3 , 2004, AVI.

[16]  Stephen McCamant,et al.  The Daikon system for dynamic detection of likely invariants , 2007, Sci. Comput. Program..

[17]  Juha Sorva,et al.  UUhistle: a software tool for visual program simulation , 2010, Koli Calling.

[18]  Lauri Malmi,et al.  A Review of Generic Program Visualization Systems for Introductory Programming Education , 2013, TOCE.

[19]  Rob Miller,et al.  Addressing misconceptions about code with always-on programming visualizations , 2014, CHI.

[20]  Margaret M. Burnett,et al.  Implementing level 4 liveness in declarative visual programming languages , 1998, Proceedings. 1998 IEEE Symposium on Visual Languages (Cat. No.98TB100254).

[21]  Michael D. Ernst,et al.  An experimental evaluation of continuous testing during development , 2004, ISSTA '04.

[22]  Mordechai Ben-Ari,et al.  Roles of variables as seen by CS educators , 2004, ITiCSE '04.

[23]  Steven L. Tanimoto,et al.  A perspective on the evolution of live programming , 2013, 2013 1st International Workshop on Live Programming (LIVE).

[24]  Benedict du Boulay,et al.  Some Difficulties of Learning to Program , 1986 .

[25]  Jorma Sajaniemi,et al.  Roles of variables in object-oriented programming , 2005, OOPSLA '05.

[26]  Jeffrey Heer,et al.  A Tour through the Visualization Zoo , 2010 .

[27]  Michelene T. H. Chi,et al.  Eliciting Self-Explanations Improves Understanding , 1994, Cogn. Sci..

[28]  Lauri Malmi,et al.  Visual Algorithm Simulation Exercise System with Automatic Assessment: TRAKLA2 , 2004, Informatics Educ..

[29]  Jan O. Borchers,et al.  How live coding affects developers' coding behavior , 2014, 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).