Developing Program Visualizations


Sponsor John Stasko
stasko@cc.gatech.edu
253 CoC
Area Human-Computer Interaction

Problem
What happens when you write a program, then you run it and it crashes? Do you use a debugger? Do you insert print statements? Do you wish there was some better way of understanding what went on in the program and why the problem occurred?

Program visualization is the notion that we can build visualizations of the data, operations, structures, run-time features and execution of a program as a way of helping the programmer better understand what the program is doing. What's so challenging is that all of these things are abstract entities, without any natural visual correspondence. Giving these inanimate notions a visual presence can help a viewer to monitor and understand them. Isn't a picture worth a thousand words?

While program visualization is actually a fairly old area of study, we still do not have good visual debugging and analysis tools to use today. Why is that so? Well, that's a difficult question with a variety of possible answers. This project will help you understand the question better, learn about exisiting work in program visualization, and see some directions for future work in the area.

Your first task in the project is to read about some existing research efforts/systems. Next, consider a Java program's execution. What is important to present about the execution. List the things that you think a Java program visualization system should show. Finally, design what the visualizations would look like. You only need to do drawings on paper---no implementation is necessary. But be creative, and most importantly, make your visualization present the information that is most important to a programmer.

Background
Read the following four articles to learn more about this field.

All these articles can be picked up from Prof. Stasko.

Deliverables
You should turn in a 5-10 page report summarizing all your efforts on the project. First, review the articles you read. Don't just repeat what they said, but summarize the important themes that emerge from all of them. What do you think future research directions should be? Second, describe the visualization designs that you created. What do they present and how would they work? Remember to actually turn in your designs too.

Evaluation
You will be evaluated on the depth, insight and thoroughness of your report as well as the creativity and thought put into your visualization(s). Do they illustrate Java programs well? Would it assist program developers?