Live, synchronized, and mental map preserving visualization for data structure programming

Live programming is an activity in which the programmer edits code while observing the result of the program. It has been exercised mainly for pedagogical and artistic purposes, where outputs of a program are not straightforwardly imagined. While most live programming environments so far target programs that explicitly generate visual or acoustic outputs, we believe that live programming is also useful for data structure programming, where the programmer often has a hard time to grasp a behavior of programs. However, it is not clear what features a live programming environment should provide for such kind of programs. In this paper, we present a design of live programming environment for data structure programming, identify the problems of synchronization and mental map preservation, and propose solutions based on a calling-context sensitive identification technique. We implemented a live programming environment called Kanon, and tested with 13 programmers.

[1]  Jonathan Edwards,et al.  Example centric programming , 2004, SIGP.

[2]  Hsu-Chun Yen,et al.  Mental map preserving graph drawing using simulated annealing , 2011, Inf. Sci..

[3]  Robert Sedgewick,et al.  A system for algorithm animation , 1984, SIGGRAPH.

[4]  J.T. Stasko,et al.  Tango: a framework and system for algorithm animation , 1990, Computer.

[5]  Mitchel Resnick,et al.  Real-time programming and the big ideas of computational literacy , 2003 .

[6]  Marc H. Brown,et al.  Zeus: a system for algorithm animation and multi-view editing , 1991, Proceedings 1991 IEEE Workshop on Visual Languages.

[7]  Hidehiko Masuhara,et al.  Making live programming practical by bridging the gap between trial-and-error development and unit testing , 2015, SPLASH.

[8]  Xiang Cao,et al.  DejaVu: integrated support for developing interactive camera-based programs , 2012, UIST.

[9]  T. Dean Hendrix,et al.  An extensible framework for providing dynamic data structure visualizations in a lightweight IDE , 2004, SIGCSE.

[10]  Sebastian Burckhardt,et al.  It's alive! continuous feedback in UI programming , 2013, PLDI.

[11]  Hidehiko Masuhara,et al.  Live Data Structure Programming , 2017, Programming.

[12]  Henry Lieberman,et al.  Bridging the gulf between code and behavior in programming , 1995, CHI '95.

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

[14]  Sean McDirmid,et al.  Living it up with a live programming language , 2007, OOPSLA.

[15]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[16]  Sean McDirmid,et al.  Usable live programming , 2013, Onward!.

[17]  Daniel W. Archambault,et al.  The mental map and memorability in dynamic graphs , 2012, 2012 IEEE Pacific Visualization Symposium.

[18]  Bil Lewis,et al.  Debugging Backwards in Time , 2003, ArXiv.

[19]  Alan F. Blackwell,et al.  From sonic Pi to overtone: creative musical experiences with domain-specific and functional languages , 2013, FARM '13.

[20]  Kent L. Beck,et al.  Test-driven Development - by example , 2002, The Addison-Wesley signature series.

[21]  Andreas Zeller,et al.  Visualizing Memory Graphs , 2001, Software Visualization.