Program Visualization -- Overview

Visualization -- Definitions and Goals

"The purpose of computing is insight, not numbers", Richard Hamming (1962)

Relevant Dictionary Definitions of Visualization

Paraphrases of Comments by Workers in the Field

The purpose of visualization is to render visible that which is not and thereby make it more understandable.

Visualization consists of the binding (or mapping) of data to representations that can be perceived. The types of bindings can be visual, auditory, tactile, or a combination of these.

The goal is the systematic generation of visual representations, given a description of all the important data characteristics and the specification of the user's interpretation aims. The interpretation aims define what characteristics of the data, or relations between data variables, the user is interested in analyzing by means of visual representation.

Why Use Visualization?

Types of Visualization

Mathmatical Visualization

Scientific and Engineering Visualization

astronomy
physics
chemistry
molecular biology
meteorology
geosciences
anthropology
space exploration
aviation
medicine
architecture
industrial design
etc.

Information Visualization

Visualization of Computation

program visualization (a.k.a. software visualization)
algorithm animation (s.b.k.a. algorithm visualization)

Algorithm Animation

Algorithm animation consists of producing animated visualizations of algorithms, usually during program execution.

Very impressive results have been achieved.

Algorithm animation work has contributed to many aspects of program visualization.

Most algorithm animation systems are confined to one programming language, which usually is the same as the language used to write the animation system.

Most algorithm animation systems can be used for purposes other than animating algorithms, but what they can do generally is limited to what can be produced by calls to animation routines in a program being animated.

Uses of Algorithm Animation

Teaching
Evaluating Algorithms
Improving Algorithms

Algorithm Animation Systems

There are many algorithm animation systems.

They differ widely in capability, techniques, and applicability. Many are devoted to specific kinds of algorithms.

Milestones in algorithm animation:

1966   L[6]
       Ken Knowlton, Bell Telephone Laboratories
       Animation of linked-list language

1981   "Sorting our Sorting"
       Ronald Baecker, University of Toronto
       16mm color and sound movie

1984   Balsa
       Marc Brown, Brown University
       Full-fledged algorithm animation system

1988   UW Illustrating Compiler
       Robert Henry, University of Washington
       Automatic insertion of animation code during compilation

1990   Tango
       John Stasko, Brown University
       Full-fledged algorithm animation system

1991   Zeus
       Mark Brown, Digital SRC
       Successor to Balsa

1993   Polka
       John Stasko, Georgia Tech
       Extension of Tango to animate parallel computation

How Algorithm Animation is Done

Most algorithm animation systems have libraries of animation routines and interface support.

Most algorithm animation systems require manual insertion of calls to animation routines in program implementing the algorithm.

A notable exception is the UW Illustrating compiler, which automatically detects some kinds of algorithms and generates calls to animation routines in the compiled code.

In the case of manual insertion, the person doing the insertion must know:

the programming language used
the algorithm to be visualized
the way the algorithm is expressed in the program
the animation routines

It often is necessary to write animation routines specific to the algorithm.

Writing a good algorithm animation requires a lot of knowledge and work.

Program Visualization

Program visualization consists of producing animated views of program executions.

Very impressive results have been achieved.

It is not limited to algorithms or activities that are evident in the source-code for the program. tI may include activity in the compiled code, the run-time system, data, and even the underlying hardware.

Most program visualization systems are confined to one programming language, which usually is the same as the language used to write the visualization system.

Some program visualization systems can be used for algorithm animation.

Uses of Program Visualization

Debugging
Evaluating and improving program performance
Evaluating and reducing resource utilization
Evaluation of algorithms in the context of complete programs and real data
Understanding program behavior
Teaching

Program Visualization Systems

There are many program visualization systems.

Like algorithm animation systems, they differ widely in capability, techniques, and applicability. Their nature is more diverse than algorithm animation systems, however.

Many visual programming environmentshave program visualization components. These often are difficult to separate from other facilities.

Problems in Program Visualization

One of the most difficult aspects of program visualization is getting the necessary data for visualization. It generally is much harder than for algorithm animation.

The aspect of program behavior to be visualized must be identified.

A suitable visual representation for the behavior must be found.

The effects of the visualization on the behavior of the program being visualized must be considered.

Limited screen space often creates problems in presenting information from real programs.