ABSTRACT
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.
- Samuel Aaron and Alan F. Blackwell. 2013. From Sonic Pi to Overtone: Creative Musical Experiences with Domain-specific and Functional Languages. In Proceedings of the First ACM SIGPLAN Workshop on Functional Art, Music, Modeling & Design (FARM ’13) . ACM, New York, NY, USA, 35–46. Google ScholarDigital Library
- Apple Computer. 2016. Swift Playgrounds. http://www.apple.com/swift/ playgrounds/ . Accessed February 2017.Google Scholar
- D. Archambault and H. C. Purchase. 2012. The Mental Map and Memorability in Dynamic Graphs. In 2012 IEEE Pacific Visualization Symposium. 89–96. Google ScholarDigital Library
- Kent Beck. 2003. Test-Driven Development: by Example. Addison-Wesley Professional. Google ScholarDigital Library
- M. H. Brown. 1991. Zeus: a system for algorithm animation and multi-view editing. In Proceedings 1991 IEEE Workshop on Visual Languages. 4–9.Google ScholarCross Ref
- Marc H. Brown and Robert Sedgewick. 1984. A System for Algorithm Animation. In Proceedings of the 11th Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH ’84) . ACM, New York, NY, USA, 177–186. Google ScholarDigital Library
- Sebastian Burckhardt, Manuel Fahndrich, Peli de Halleux, Sean McDirmid, Michal Moskal, Nikolai Tillmann, and Jun Kato. 2013. It’s Alive! Continuous Feedback in UI Programming. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’13) . ACM, New York, NY, USA, 95–104. Google ScholarDigital Library
- Almende B.V. 2018. vis.js - A dynamic, browser based visualization library. Retrieved April 23, 2018 from http://visjs.org/Google Scholar
- Jonathan Edwards. 2004. Example Centric Programming. In Proceedings of Object-Oriented Programming Systems, Languages, and Applications (OOPSLA’04) , Doug Schmidt (Ed.). ACM, New York, NY, USA, 84–91. Google ScholarDigital Library
- Chris Granger. 2012. Light Table. http://www.chris-granger.com/lighttable/ . Accessed February 2017.Google Scholar
- Philip J Guo. 2013. Online Python Tutor: Embeddable Web-based Program Visualization for CS Education. In Proceeding of the 44th ACM Technical Symposium on Computer Science Education . ACM, 579–584. Google ScholarDigital Library
- Christopher Michael Hancock. 2003. Real-time Programming and the Big Ideas of Computational Literacy . Ph.D. Dissertation. Massachusetts Institute of Technology, Cambridge, MA, USA.Google Scholar
- T. Dean Hendrix, James H. Cross, II, and Larry A. Barowski. 2004. An Extensible Framework for Providing Dynamic Data Structure Visualizations in a Lightweight IDE. In Proceedings of the 35th SIGCSE Technical Symposium on Computer Science Education (SIGCSE ’04) . ACM, New York, NY, USA, 387–391. Google ScholarDigital Library
- Ariya Hidayat. 2018. Esprima. Retrieved April 23, 2018 from http://esprima. orgGoogle Scholar
- Tomoki Imai, Hidehiko Masuhara, and Tomoyuki Aotani. 2015. Making Live Programming Practical by Bridging the Gap Between Trial-and-error Development and Unit Testing. In Companion Proceedings of the 2015 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity (2015-10-25), Jonathan Aldrich (Ed.). ACM, ACM, 11–12. Google ScholarDigital Library
- Fabian Jakobs. 2018. Ace - The High Performance Code Editor for the Web. Retrieved April 23, 2018 from https://ace.c9.ioGoogle Scholar
- Saketh Kasibatla and Alessandro Warth. 2018. Seymour: Live Programming for the Classroom. Retrieved June 17, 2018 from https://harc.github.io/ seymour-live2017/Google Scholar
- Jun Kato, Sean McDirmid, and Xiang Cao. 2012. DejaVu: Integrated Support for Developing Interactive Camera-based Programs. In Proceedings of the 25th annual ACM symposium on User Interface Software and Technology (UIST’12) . ACM, 189–196. Google ScholarDigital Library
- Khan Academy. 2018. Intro to JS: Drawing & Animation. https://www. khanacademy.org/computing/computer-programming/programming . Accessed February 2017.Google Scholar
- Yi-Yi Lee, Chun-Cheng Lin, and Hsu-Chun Yen. 2006. Mental Map Preserving Graph Drawing Using Simulated Annealing. In Proceedings of the 2006 Asia-Pacific Symposium on Information Visualisation - Volume 60 (APVis ’06) . Australian Computer Society, Inc., Darlinghurst, Australia, Australia, 179–188. http://dl.acm.org/citation.cfm?id=1151903.1151930 Google ScholarDigital Library
- Bil Lewis. 2003. Debugging Backwards in Time. In Proceedings of the Fifth International Workshop on Automated Debugging (AADEBUG 2003) . arXiv: cs.SE/0310016 http://arxiv.org/abs/cs.SE/0310016Google Scholar
- Henry Lieberman and Christopher Fry. 1995. Bridging the Gulf Between Code and Behavior in Programming. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI ’95) . ACM Press/Addison-Wesley Publishing Co., New York, NY, USA, 480–486. Google ScholarDigital Library
- Sean McDirmid. 2007. Living it Up with a Live Programming Language. In In Proceedings of Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!) . ACM, 623–638.Google ScholarDigital Library
- Sean McDirmid. 2013. Usable Live Programming. In Proceedings of the 2013 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (Onward! 2013) . ACM, New York, NY, USA, 53–62. Google ScholarDigital Library
- Akio Oka, Hidehiko Masuhara, and Tomoyuki Aotani. 2017a. The Visualization of Data Structures and Interactive Features for Live Programming. In The 113th IPSJ Workshop on Programming.Google Scholar
- Akio Oka, Hidehiko Masuhara, Tomoki Imai, and Tomoyuki Aotani. 2017b. Kanon: Data Structure Programming using Live Programming Environment. In Proceedings of the 10th JSSST Workshop on Programming and Programming Languages (PPL 2017) .Google Scholar
- Akio Oka, Hidehiko Masuhara, Tomoki Imai, and Tomoyuki Aotani. 2017c. Live Data Structure Programming. In Companion to the First International Conference on the Art, Science and Engineering of Programming (Programming ’17) . ACM, New York, NY, USA, Article 26, 7 pages. Google ScholarDigital Library
- John Resig. 2012. Redefining the Introduction to Computer Science. http: //ejohn.org/blog/introducing-khan-cs/ . Accessed March 2018.Google Scholar
- John T Stasko. 1989. TANGO: A Framework and System for Algorithm Animation . Technical Report. Providence, RI, USA. Google ScholarDigital Library
- David Ungar and Randall B. Smith. 1987. Self: The Power of Simplicity. In Proceedings of Object-Oriented Programming Systems, Languages, and Applications (OOPSLA’87) (ACM SIGPLAN Notices) , Norman Meyrowitz (Ed.), Vol. 22(12). ACM, ACM, Orlando, FL, 227–242. Google ScholarDigital Library
- Bret Victor. 2012. Inventing on Principle. Keynote Talk at the Canadian University Software Engineering Conference (CUSEC).Google Scholar
- Thomas Zimmermann and Andreas Zeller. 2002. Visualizing Memory Graphs. In Software Visualization. Springer, 191–204. Google ScholarDigital Library
Index Terms
- Live, synchronized, and mental map preserving visualization for data structure programming
Recommendations
Live Data Structure Programming
Programming '17: Companion Proceedings of the 1st International Conference on the Art, Science, and Engineering of ProgrammingWhen we write a program that manipulates data structures, we often draw and manipulate a visual image of the structures in our mind. In order to immediately connect those mental images with the data objects created by the program, we propose a live ...
Small-Step Live Programming by Example
UIST '20: Proceedings of the 33rd Annual ACM Symposium on User Interface Software and TechnologyLive programming is a paradigm in which the programming environment continually displays runtime values. Program synthesis is a technique that can generate programs or program snippets from examples. \deltextThis paper presents a new programming ...
Investigating the Impact of Using a Live Programming Environment in a CS1 Course
SIGCSE 2022: Proceedings of the 53rd ACM Technical Symposium on Computer Science Education - Volume 1Novice programmers often struggle with code understanding and debugging. Live Programming environments visualize the runtime values of a program each time it is modified to provide immediate feedback, which help with tracing the program execution. This ...
Comments