Understanding data structures and algorithms is an integral part of software engineering and elementary computer science education. However, people usually have difficulty in understanding abstract concepts and processes such as procedural encoding of algorithms and data structures. One way to improve their understanding is to provide visualizations to make the abstract concepts more concrete. In this chapter, we represent a novel idea to promote the interaction between the user and the algorithm visualization system called visual algorithm simulation. As a proof of concept, we represent an application framework called Matrix that encapsulates the idea of visual algorithm simulation. The framework is applied by the TRAKLA2 learning environment in which algorithm simulation is employed to produce algorithm simulation exercises. Moreover, we discuss the benefits of such exercises and applications of visual algorithm simulation in general.
Data structures and algorithms are important core issues in computer science education. They are also complex concepts, thus difficult to grasp by novice learners. Fortunately, algorithm animation, visual debugging and algorithm simulation are all suitable methods to aid the learning process. Much research has been carried out to identify the great number of issues that we must take into account while designing and creating effective visualizations and algorithm animation for teaching purposes (Baecker, 1998; Brown & Hershberger, 1992; Fleischer & Kucera, 2001; Gloor, 1998; Miller, 1993). See, for example, the techniques developed for using color and sound (Brown & Hershberger, 1992) or hand-made designs (Fleischer & Kucera, 2001) to enhance the algorithm animations. We argue, however, that these are only minor details (albeit important ones) in the learning process as a whole. In order to make a real difference here, we should change the point of view and look at the problem from the learner’s perspective. How can we make sure the learner actually gets the picture? It is not what the learner sees but what he or she does. In addition, we argue that no matter what kind of visualizations the teacher has available, the tools cannot compete in their effectiveness with environments in which the learner must perform some actions in order to become convinced of his or her own understanding.
From the pedagogical point of view, for example, a plain tool for viewing the execution of an algorithm is not good enough (C. D. Hundhausen, Douglas, & Stasko, 2002; Naps et al., 2003). Even visual debugging cannot cope with the problem because it is always bound to the actual source code. It is still the system that does all the work and the learner only observes its behavior. At least we should ensure that a level of progress in learning has taken place. This requires an environment where we can give and obtain feedback on the student’s performance.
Key Terms in this Chapter
Automatic Assessment: is computer-aided grading method for various types of exercises.
Algorithm Visualizations: are abstract graphical representations that provide an insight into how small sections of code (algorithms) compute.
Algorithm Simulation Exercises: are simulation exercises solved by means of visual algorithm simulation, which are typically graded in terms of automatic assessment.
Visual Algorithm Simulation: is direct manipulation, which not only allows actions in the level of the representation, but also alters the real underlying implemented data structures.
Direct Manipulation: is a human-computer interaction style, which involves continuous representation of objects of interest, and rapid, reversible, incremental actions and feedback (Wikipedia).
Software Visualization: is an active research field in software engineering that uses graphics and animation to illustrate different aspects of software.
Algorithm Animation: is the process of visualizing the behavior of an algorithm by abstracting the data, operations, and semantics of the algorithm by creating dynamic graphical views of those abstractions.