190 likes | 208 Views
Explore a new method of explaining algorithms using visual aids and hierarchical abstract models. Learn algorithm complexities, programming, and time complexities effectively.
E N D
Yet another Way to Explain Algorithms Tomasz Müldner*, Elhadi Shakshuki and Joe Merrill Jodrey School of Computer Science, Acadia University, Wolfville, NS, Canada * presenting CATE, August 18, 2004
Standard approach The user has to map the problem domain to the graphical domain and then looking at the animation they have to retrieve essential properties of the algorithm. CATE, August 18, 2004
Contents of the Talk • Introduction to Algorithm Visualization • Description of Algorithm Explanation • Example: Selection Sort (Proceedings: Insertion Sort) • Conclusions • Future Work CATE, August 18, 2004
Standard Algorithm Visualization • take the description of the algorithm (usually the code in a programming language, e.g. C) • graphically represent data in the code using bars, points, etc. • use animation to represent the flow of control • show the animated algorithm • hope that the learner will now understand the algorithm CATE, August 18, 2004
Algorithm Explanation (AE) • To make algorithm explanation possible, the learner has to build a mapping: • AE uses a variety of tools to help the students to learn algorithms, including textual and visual representation learner’s conceptions of these entities and events the domain consisting of the algorithm entities and temporal events CATE, August 18, 2004
Goals of AE • Understanding of both, what the algorithm is doing and how it works. • Ability to justify the algorithm correctness (why the algorithm works). • Ability to program the algorithm in any programming language. • Understanding the time complexity of the algorithm. CATE, August 18, 2004
Requirements of AE • the algorithm is presented at several levels of abstraction • each level of abstraction is represented by the text and optionally by visualization • active learning is supported • the design helps to understand time complexity • presentations are designed by experts. CATE, August 18, 2004
AE Explanations An explanation of a single algorithm consists of the following four parts: • Hierarchical Abstract Algorithm Model • Example of an abstract implementation of the Abstract Algorithm Model • Tools to help predicting the algorithm complexity. • Questions for students, including “do it yourself” mode for each level of abstraction. CATE, August 18, 2004
selection smallest swap Example: Selection Sort Abstraction tree CATE, August 18, 2004
Top Level of Abstraction • ADT consists of sequences of elements of type T, denoted by Seq<T>, with a linear order. • There is a function (or a type) int comparator(const T x, const T y) which returns -1 if x is less than y, 0 if they are equal and +1 otherwise CATE, August 18, 2004
Operations from top-level ADT • prefix(t), possibly empty (NULL), which can be incremented by one element; • inc(prefix(t)), which increments a prefix by one element; • suffix(t), where a prefix followed by the suffix is equal to the entire sequence t; • first(suffix), which returns the first element of the suffix; • T smallest(seq<T> t, Comparator comp), which finds the smallest element in t (using comp); • swap(T el1, T el2), which swaps el1 and el2. CATE, August 18, 2004
Top Level Code: Text void selection(Seq<T> t, Comparator comp) { for(prefix(t) = NULL; prefix(t) != t; inc(prefix(t))) swap( smallest(suffix(t), comp), first(suffix(t))); } CATE, August 18, 2004
Visualization shows Invariants INVARIANT 1 All elements in the prefix are smaller (according to the “comp” relation) than all elements in the suffix. In the visualization, the prefix box is smaller than the suffix box INVARIANT 2 The prefix is sorted. In the visualization, elements in the prefix are growing CATE, August 18, 2004
ADT: Low Level The ADT consists of data described before, and the following operations: • first(t), which returns the first element of the sequence t; • next(current, t), which returns the element of the sequence t, following current, or NULL if there is no such element. CATE, August 18, 2004
Low Level Code: Text T smallest(Seq<T> t, Comparator comp) { small = current = first(t); while((current=next(current,t))!=NULL) if(comp(small, current) < 0) small = current; return small; } CATE, August 18, 2004
Post Test • What is the number of comparisons and swaps performed when selection sort is executed for a sorted sequence and a sequence sorted in reverse. • What is the time complexity of the function isSorted(t), which checks if t is a sorted sequence? • Hand-execute the algorithm for a sample set of input data of size 4. • Hand-execute the next step of the algorithm for the current state. • What’s the last step of the algorithm? CATE, August 18, 2004
Conclusions A new approach for learning algorithms: • an algorithm is explained at various levels of abstraction • each level is designed to present a single operation used in the algorithm • all operations are shown in a textual and visual form • the visualization system presented in this work is implemented using Macromedia Flash MX CATE, August 18, 2004
Future Work • Generic visualizations for various classes of algorithms such as iterative and recursive • A complete system with a student model to provide an intelligent and adaptive learning system. CATE, August 18, 2004
Kruskal SET PRIORITY-QUEUE MERGE-FIND Trees Linked-Lists merge find Correction CATE, August 18, 2004