| 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.
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?