ABSTRACT
Data structure algorithms are of fundamental importance in teaching and software development, yet are difficult to understand. We propose a new approach for understanding, debugging and developing heap manipulating data structures. The key technical idea of our work is to combine deep parametric abstraction techniques emerging from the area of static analysis with interactive abstraction manipulation. Our approach bridges program analysis with HCI and enables new capabilities not possible before: i) online automatic visualization of the data structure in a way which captures its essential operation, thus enabling powerful local reasoning, and ii) fine grained pen and touch gestures allowing for interactive control of the abstraction -- at any point the developer can pause the program, graphically interact with the data, and continue program execution. These features address some of the most pressing challenges in developing data structures. We implemented our approach in a Java-based system called FluiEdt and evaluated it with $27$ developers. The results indicate that FluiEdt is more effective in helping developers find data structure errors than existing state of the art IDEs (e.g. Eclipse) or pure visualization based approaches.
Supplemental Material
Available for Download
An Interactive System for Data Structure Development
- Aftandilian, E. E. et al. Heapviz: interactive heap visualization for program understanding and debugging. In Proc. SOFTVIS '10, 2010, p.53--62. Google ScholarDigital Library
- Balakrishnan, G., and T. Reps. Recency-abstraction for heap-allocated storage. In Proc. SAS'06. Google ScholarDigital Library
- Bragdon, A. et al. Code bubbles: A working set-based interface for code understanding and maintenance. In Proc. CHI '10. Google ScholarDigital Library
- Brandt, J. et al. Example-centric programming: integrating web search into the development environment. In Proc. CHI '10. Google ScholarDigital Library
- Brandt, J. et al. Two studies of opportunistic programming: Interleaving web foraging, learning, and writing code. In Proc. CHI '09. Google ScholarDigital Library
- Brown, M. H., and M. A. Najork. Algorithm animation using 3d interactive graphics. In Proc. UIST '93. Google ScholarDigital Library
- DeLine, R., and K. Rowan. Code canvas: Zooming towards better development environments. In Proc. ICSE '10. Google ScholarDigital Library
- Détienne, F. Software Design-Cognitive Aspect. Springer, 2002. Google ScholarDigital Library
- Galenson, J. et al. Codehint: Dynamic and interactive synthesis of code snippets. In Proc. ICSE '14. Google ScholarDigital Library
- Gilmore, D. J. Models of debugging. Acta Psychologica 78, 13 (1991), 151--172.Google ScholarCross Ref
- Guo, P. J. Online python tutor: Embeddable web-based program visualization for cs education. In Proc. SIGCSE '13. Google ScholarDigital Library
- Hartmann, B., M. Dhillon, and M. K. Chan. Hypersource: Bridging the gap between source and code-related web sites. In Proc. CHI '11. Google ScholarDigital Library
- Hoffmann, R., J. Fogarty, and D. S. Weld. Assieme: finding and leveraging implicit references in a web search interface for programmers. In Proc. UIST' 07. Google ScholarDigital Library
- Karrer, T. et al. Stacksplorer: Call graph navigation helps increasing code maintenance efficiency. In Proc. UIST '11. Google ScholarDigital Library
- Katz, I. R., and J. R. Anderson. Debugging: An analysis of bug-location strategies. SIGCHI Bull. 21, 1 (Aug. 1989). Google ScholarDigital Library
- Ko, A. J., and B. A. Myers. Extracting and answering why and why not questions about java program output. ACM Trans. Softw. Eng. Methodol. 20, 2 (Sept. 2010), 4:1--4:36. Google ScholarDigital Library
- Ko, A. J., B. A. Myers, and H. H. Aung. Six learning barriers in end-user programming systems. In Proc. VL/HCC '04. Google ScholarDigital Library
- Lieber, T., J. R. Brandt, and R. C. Miller. Addressing misconceptions about code with always-on programming visualizations. In Proc. CHI' 14. Google ScholarDigital Library
- Mamykina, L. et al. Design Lessons from the Fastest Q&A site in the west. In Proc. CHI '11. Google ScholarDigital Library
- Marron, M. et al. Abstracting runtime heaps for program understanding. Trans. Softw. Eng.. Google ScholarDigital Library
- Mayer, R. E. The psychology of how novices learn computer programming. ACM Computing Surveys (CSUR) 13, 1 (1981), 121--141. Google ScholarDigital Library
- Oney, S., and J. Brandt. Codelets: Linking interactive documentation and example code in the editor. In Proc. CHI '12. Google ScholarDigital Library
- Rzeszotarski, J. M., and A. Kittur. Kinetica: Naturalistic multi-touch data visualization. In Proc. CHI' 14. Google ScholarDigital Library
- Sagiv, M., T. Reps, and R. Wilhelm. Parametric shape analysis via 3-valued logic. ACM Trans. Program. Lang. Syst. Google ScholarDigital Library
- Sorva, J., V. Karavirta, and L. Malmi. A review of generic program visualization systems for introductory programming education. Trans. Comput. Educ. Google ScholarDigital Library
- Stasko, J. Tango: a framework and system for algorithm animation. Computer 23, 9 (Sept 1990), 27--39. Google ScholarDigital Library
- Weiser, M. Programmers use slices when debugging. Commun. ACM 25, 7 (July 1982), 446--452. Google ScholarDigital Library
- Wightman, D. et al. Snipmatch: Using source code context to enhance snippet retrieval and parameterization. In Proc. UIST '12. Google ScholarDigital Library
- Yeh, R. B., A. Paepcke, and S. R. Klemmer. Iterative design and evaluation of an event architecture for pen-and-paper interfaces. In Proc. UIST '08. Google ScholarDigital Library
- Zeleznik, R. et al. Hands-on Math: A Page-based Multi-touch and Pen Desktop for Technical Work and Problem Solving. In Proc. UIST '10. Google ScholarDigital Library
Index Terms
- An Interactive System for Data Structure Development
Recommendations
Best managerial practices in agile development
ACM SE '14: Proceedings of the 2014 ACM Southeast Regional ConferenceAgile development has been gaining momentum over the year. It practices are perceived by some to be the best for software development. This work investigates agile best development and managerial practices, specially the benefits for optimizing the ...
Test-Driven Development: Concepts, Taxonomy, and Future Direction
Test-driven development creates software in very short iterations with minimal upfront design. Poised for widespread adoption TDD has become the focus of an increasing number of researchers and developers.
Lean Software Development: A Tutorial
“Lean Software Development” has become a popular term over the last few years. This tutorial describes where it comes from, what it means, how it relates to well-known agile development practices, and how it will evolve in the future.
Comments