Eduardo Poyart
Angela de Lancastre
PUC-Rio / IMPA - 2000
Prof. Luiz Henrique de Figueiredo
Definitions:
"A process of abstracting data, operations and semantics of computer programs in order to create animated visualizations of these abstractions" - John T. Stasko
"A form of program visualization that is concerned with the dynamic and interactive graphical displaying of a program's fundamental operations" - Marc H. Brown
Algorithm animation systems provide facilities so that users can visualize and interact with animated views of algorithms and so that programmers develop these animations.
Applications:
In many applications, observing the progress of a program during its execution is as important as achieving a final result (if there is one).
Geometric algorithms, which are essentially dynamic, and datya structures are better understood visually.
Algorithm animation is a powerful learning tool, since it abstracts details with which students will deal later when implementing these algorithms.
We can understand algorithm animation as:
An educational tool, since it is a tool that helps understanding algorithms
An evaluation tool, since it helps the process of testing and debugging algorithms
A research and development tool, since it provides visual inspiration.
Usual approach:
Implementation using high-level languages (procedural or OO)
Implementation using dynamica animation systems
The usual approach for specifying animation of algorithms in high-level languages is as follows: an implementation of an algorithm is annotated with markers that identify its fundamental operations that will be displayed. These annotations, called interesting events, may have parameters that typically identify data structures from the program. Each view controls some screen real estate and is notified when an event occurs in the algorithm. A view is responsible for updating its graphical display based on the event. Views can also propagate user input back to the algorithm.
Implementers add a specific algorithm animation library package to the programming language. These packages contain routines for displaying elements and for synchronization between algorithm and animation.
Some algorithm animation software:
Mac Balsa
Zeus
XYZ Geobench
XTango
Polka
GeoLab
AlgAE
Catai
This work analyzes some of the existing algorithm animation systems and presents a new system, developed in Java and available online, called AnimaAlgo.
The name AnimaAlgo is a play with words in Portuguese. It means Animate Algorithms if "Algo" is interpreted as an abbreviation of "Algoritmos", but it also means, literally, "Animate Something".