Figure 1: We contribute a novel way of debugging, allowing the user to directly interact with a program's live heap. The heap graph is abstracted using a method for online parametric heap abstraction which allows us to only visualize the algorithm's essential operation. The user can change and refine these automatic abstractions interactively. Our system can be used during regular development (left) and in a classroom setting using a pen+touch user interface (right).
ABSTRACTData 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 FluidEdt and evaluated it with 27 developers. The results indicate that FluidEdt is more effective in helping developers c 2015 Association for Computing Machinery. ACM acknowledges that this contribution was authored or co-authored by an employee, contractor or affiliate of a national government. As such, the Government retains a nonexclusive, royalty-free right to publish or reproduce this article, or to allow others to do so, for Government purposes only. find data structure errors than existing state of the art IDEs (e.g. Eclipse) or pure visualization based approaches.