10 likes | 190 Views
Going Beyond Algorithm Visualization to Algorithm Exploration Clifford A. Shaffer 1 , Mayank Agarwal 2 , Arpit Kumar 3 , and Stephen H. Edwards 1 1 Department of Computer Science, Virginia Tech 2 Department of Information Technology, Delhi College of Engineering
E N D
Going Beyond Algorithm Visualization to Algorithm Exploration Clifford A. Shaffer1, Mayank Agarwal2, Arpit Kumar3, and Stephen H. Edwards1 1Department of Computer Science, Virginia Tech 2 Department of Information Technology, Delhi College of Engineering 3Department of Computer Science, IIT Kharagpur The Hashing Tutorial The topic of hashing has many features that make it suitable for an algorithm exploration. It is an intrinsically important concept, and is widely used in industry. It is based on a simple and compelling idea, and yet it is sur-prisingly difficult to implement a satisfactory hashing system since there are many details and unexpected nuances. There are many choices for a hash function. This fact is fairly easy for students to grasp, even if the reasons why a given hash function is good or bad are not so clear to them. In contrast, the fact that there are also many choices for a collision resolution method does not occur to the typical student without prompting (the typical student will believe that linear probing is the only mechanism for collision resolution until told otherwise). The combination of multiple hash functions and multiple collision resolution methods, especially when com-pounded by the wide range of possibilities for key distri-butions and the subtleties involved in the space/time tradeoffs regarding size and load factors for the hash table, gives a lot of scope for exploration. Finally, there are a myriad of interesting details involved. Conclusions There are a number of challenges involved with developing an algorithm exploration. Perhaps the most obvious is that an algorithm exploration is likely to be much larger and more complex than an AV. An even more important concern in algorithm exploration design is keeping true to constructivist learning principles. An effective algorithm exploration must walk a fine line bet-ween providing enough guidance to students on the one hand, while still providing the opportunity for meaningful exploration on the other. In our experience, this is an ex-tremely difficult balance to strike even when we con-sciously strive toward this goal. For More Information The Hashing Tutorial:http://www.cs.vt.edu/~shaffer/hashing/tutorial.php The AlgoViz Wiki: http://algoviz.cs.vt.edu Contact: shaffer@cs.vt.edu Abstract While data structure and algorithm visualizations (AVs) have proved valuable to the CS education community, even the better AVs today are limited to instruction in the mechanics of how a given data structure or algorithm behaves. We discuss the value of going beyond the scope of such AVs to provide students with an opportunity to explore the relative merits of various alternatives. We call such artifacts “algorithm explor-ations.” As an illustration of what an algorithm exploration might look like, we describe a hashing tutorial that we have implemented. Algorithm Explorations A key aspect to the pedagogical usefulness of AVs is their ability to allow users to interact with the material. The best AVs allow students to direct their learning by controlling the information stored in the data structure or processed by the algorithm. A few even require students to participate directly in some way, such as by indicating where in a tree a given record will be inserted or otherwise requiring the student to intervene. This idea that students need to be active participants in the learning experience fits in with the con-structivist approach to learning. Algorithm explorations go beyond the designed intent of most current AVs, which is limited to educating students in the mechanical aspects of the behavior of a data structure or algorithm. We seek to allow students to explore the per-formance characteristics and relative merits for various design choices within some topic, such as comparing various search trees, hash system designs, or sorting algorithms. Our conception of an algorithm exploration uses simulation to enhance AVs in ways that allow students to investigate not only how an algorithm or data structure works, but also how it performs in terms of its space or time efficiency. The subject of the exploration should have a sufficiently rich design space such that there are meaningful design choices to be made by the students, where such choices will result in some detect-able difference in quality or performance. The goal is to in-volve students in more than merely watching and manipu-lating data structures and algorithms.