An Analysis Of Design Algorithm Visualizations Computer Science Essay

Published: Last Edited:

This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.

There are many algorithm visualizations being developed, but the designers of these visualization systems do not clearly specify their intention to support a particular task [Petre et al. 98]. The designing phase requires not only a creative mind, but also a very good working knowledge of any design framework for animation. According to Sami Khuri [32], visualizations can be used by all types of users in all kinds of tasks. But, there is no perfect algorithm visualization that universally satisfies all the requirements. A successful visualization should also consider the design issues like impressive representation and presentation, environmental factors, design and layout, color, graphics and user-interface, apart from the factors that make it more educationally effective.

For designing educationally effective algorithm visualizations, it needs lot of investment on time, effort and resources. Apart from this, it needs to follow the software development life cycle that involves analysis of requirements, design, implementation, testing and maintenance. It is common to have these phases overlapping each other during the entire process, because of which only few visualization systems are successful out of many attempted. For designing algorithm visualizations, analysis of requirements is the most important phase as it decides on what and how to design. This key phase answers most of the questions like: Who will be using the visualization? How do you fit this in the curriculum? How to make it educationally effective? How can it be used as learning or teaching tool? Is the system technically feasible? In order to design an effective visualization, it is important to analyze all these requirements clearly before starting to design and incorporate required features during the design phase. This avoids the wastage of extra time that is usually spent on the overlapping phases.

Sami Khuri advises the visualization designers to consider the following different parts of the analysis of requirements for the development of algorithm visualizations [32]. These factors must be considered in order to design effective visualizations.

2.1 Users' Analysis:

While developing algorithm visualizations, designers must know who the actual users are. Understanding these users determines the system's content, breadth, depth, organization and information presentation. These users can be divided into four roles which include students, educators or faculty, researchers or developers. More than one of these roles can be assumed by one individual.

These users can be further categorized into novice and experienced users. A system is supposed to be developed keeping in mind both the novice and experienced users, but ideally that would not be the case as it is difficult to develop a system for both the kinds of users. A single system cannot satisfy different levels of expertise. Beginners find difficulty in learning the system by trial and error method as they will have problems in mapping the real world entity into a programming object, thus forming misconceptions. Few design features are really essential for the beginning level users.

Expert users on the other hand, will like to play with the code to see how it works with various experiments and will then try to modify it as required. For example, they would want to see how the program works after modification, how the code really works when integrate these modules with other tools. They would also like to see how the animations designed for them would work which might require the ability to move between algorithm-level and program-level displays, depending on the user's needs.

2.2 Needs Analysis:

The needs of the user group who use the algorithm visualizations must be addressed carefully. Different users or students have different learning capabilities, so it is very important to understand their needs individually. Some of the factors like the motivation, learner's expectation and locus of control also play a significant role in learning. In this context, locus of control refers to the extent to which the individuals can control the events on their own that affect them.

Some students who tend to explore things more and learn independently would prefer the "hands on" approach. While other students prefer to be led through the entire chapter by the instructor or the computer that controls the flow of the lesson. For these types of users, graphical demonstration of the effects and the animation are really useful. The algorithm visualizations must graphically exhibit the effects of the algorithm on the data structures. It would be much helpful for the students if they have animations shown directly with explanatory cues in various forms like short, on screen, textual notes and also if they were given the control of the speed at which the algorithm was animated.

The crucial part of the interaction design would be the ability to simultaneously view the algorithm execution path and the data structure state. The users who prefer an active interaction would need some tool-set that would be similar to that found in the program development environment. "Debugging" style software that allows breakpoint setting, single step execution and the monitoring of key variables is very essential for visualizing the algorithms.

But, before the implementation of the algorithm visualization system, the designers should ask the users if they want the information to be presented in the same way, i.e. by visualizing all the algorithms including the basic simple programs. Finding out this information is essential because the effort or the time should not be wasted in visualizing simple algorithms. If the amount of data is small, or if the data structure is simple, or if the relationship of the objects is important when compared to their movement, then static picture would be sufficient. On the other hand, if the data is large, or if the there are complex data structures, or if the movement of the objects is required where the relationship of the objects changes over time, animation would be correct choice for the presentation of the algorithms.

2.3 Task Analysis:

While designing algorithm visualization system, designer's has to mainly concentrate on the system's intended goals and they have to select the required content accordingly. Different users have different situations in using the visualization system such as the creation of new animations, interactions with existing visualizations to understand the algorithm's behavior or debug the algorithms visually. Each of these situations would require a different kind of visualization system and it would be difficult to develop a different system for each situation.

In the present world, these visualizations are being used by the computer science instructors either in the lectures as visual aids or in the closed laboratories. The recent visualization software that is being used by the computer science educators is XTango, where the students can build or construct their own visualizations of the algorithms.

Systems can be designed for classroom teaching which just shows the algorithm-level displays avoids the program-level displays in order to keep the minds of the students away from the implementation details. Students cannot do any kind of modifications to the settings or implementation data in the case of the systems that are developed for classroom teaching. The other type of algorithm visualization systems are the systems designed for user's exploration where they could change the settings, input various data sets, change the speed, move one step backwards, or move between algorithm-level display and the program-level display.

If the novice users use this system and find it difficult to make the animations and design their visualizations, then their time and effort is all wasted. So, the systems that are developed for this purpose must have a powerful editor that allows the students to map the graphical objects to the data structures automatically.

2.4 Information Analysis:

Information needs to be analyzed in order to determine in order to determine how efficiently and effectively it could be visualized. Viewers or the users must concentrate more in figuring out what the picture or the visual presentation is instead of having a regular set of visual conventions such as denoting one item with one color, another item with another color. It would be more fetch able if one spends more time on visual pictures rather than trying to understand and follow the algorithms.

The information which is graphically represented is completely dependent on the concept that is being visualized. Few examples like the bubble sort algorithm and the sorting algorithm used for swapping two data values can be considered to analyze the information effectively. To understand these algorithms, students have to figure out the learning objective in understanding the core operation of the algorithm. Information can be easily analyzed by illustrating the aspects like source code, data, data structures and execution of the algorithm. In order to understand various characteristics of the information, it is often helpful in providing the multiple views of the same system. These multiple views include the graphical views of changing program data and also simultaneously its corresponding view of the executable source code.

Figure 2.4: Quadtree package

The above figure shows the quadtree which animates the quadtree compression algorithm for bitmap images. It uses the quadtree method which scans the bitmap areas by looking at those areas that are filled with identical pixel sizes. This tree is constructed using the recursive algorithm. The quadtree package takes in the bitmap as the input to construct the quadtree, where the node is either a leaf or has four children exactly. The area on the left side represents the bitmap image and the steps of the recursive algorithm. The green rectangle signifies the quadrant being executed and evaluated by the algorithm. The red lines are used to show how the algorithm partitions the bitmap image. The window named 'Quadtree' on the right of the application shows the construction of the quadtree.

2.5 Scope Analysis:

The scope of the visualization system can range from single-purpose visualizations to the specialized systems where algorithms are mainly concentrated in the fields of computer science (graph algorithms) and finally to the general purpose systems. Single-purpose visualization systems exemplify one algorithm or a set of related algorithms in detail. The general purpose visualization systems ideally include the animation of any algorithm. The greater the algorithms are animated, the more desirable the outcome is. One should not get on in the development of this system thinking that it gives the most desired result; instead they should consider that the increased flexibility increases the complexity.

In general, if the systems confine to animate the algorithms in one field, it would be difficult to represent the algorithms in other fields. Designers of the algorithm visualization systems must have the following recommendations:

Design the small systems first and do not try to provide everything that is possible in the beginning itself. Provide whatever the designer can which has high quality, beneficial to the users and is visually attractive.

Designers must have to plan a phased growth. In this rapidly evolving world, the visualization might change and grow over time. The development of these systems can be well planned for growths with the help of object oriented design and careful documentation of the programs.

Few algorithm-specific visualization systems might not allow the addition of new features in the system. So, this addition of new features must be planned to add the new features over time and perform the upgrades whenever available.

2.6 Resources Analysis:

Ideally, designing a visualization system takes more time than expected. Designing these systems is not as simple as we think, especially when designing the appearance of the visualization. There is a great demand for visualizations in computer science and it demands many computer resources like the CPU speed, networking, RAM and hard disk memory sizes, monitor size, color display panel for output equipment and keyboard, audio and video input devices. And if these visualization systems are over the internet, then it would require large space and high speed internet too as resources.

Selection of the specification method is also another important purpose of resource analysis in designing the new algorithm visualizations. Some of the specifications are the declaration, predefinition, annotation and manipulation. In the annotation method, the important steps of the algorithms are annotated with attractive events which implicitly call the graphical operations that finally execute the animations like the movement of items or rectangle, change of colors etc. When the program pointer reaches the important steps of the algorithm that are annotated during execution, the special events are created and then forwarded to the various views of the animation. These views correspond to the interesting events by respective animations. For example, the mapping between the algorithm/program's state and the final image can be specified randomly or by declaration. The changes in the program's state will be reflected in the image immediately. This approach requires more power which in turn requires more processing speed to connect the program with the final image. This procedure provides increased abstract capabilities. This approach also helps in the development of new visualization systems through manipulation, which is one of the rarely found systems. This concept of visualization can be specified using few examples. The gestures that are being used by the animators can be directly captured by the systems as it manipulates the images and connects these gestures to particular program events. This approach though has a limitation. It is difficult to identify the exact connection between the gesture and the specific program events. This method is generally used for application specific visualization systems. Through this approach, there will be either little control or no control on the way the information is presented and being visualized.