Title: Yet another Way to Explain Algorithms
1Yet another Way to Explain Algorithms
- Tomasz Müldner, Elhadi Shakshuki and Joe Merrill
- Jodrey School of Computer Science, Acadia
University, Wolfville, NS, Canada - presenting
2Standard 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.
3Contents of the Talk
- Introduction to Algorithm Visualization
- Description of Algorithm Explanation
- Example Selection Sort (Proceedings
Insertion Sort) - Conclusions
- Future Work
4Standard 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
5Algorithm 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
learners conceptions of these entities and events
the domain consisting of the algorithm entities
and temporal events
?
6Goals 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.
7Requirements 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.
8AE 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.
9Example Selection Sort
10Top Level of Abstraction
- ADT consists of sequences of elements of type T,
denoted by SeqltTgt, 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
11Operations 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(seqltTgt t, Comparator comp), which
finds the smallest element in t (using comp) - swap(T el1, T el2), which swaps el1 and el2.
12Top Level Code Text
void selection(SeqltTgt t, Comparator comp)
for(prefix(t) NULL prefix(t) ! t
inc(prefix(t))) swap( smallest(suffix(t),
comp), first(suffix(t)))
13Visualization 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
14ADT 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.
15Low Level Code Text
T smallest(SeqltTgt t, Comparator comp) small
current first(t) while((currentnext(curre
nt,t))!NULL) if(comp(small, current) lt 0)
small current return small
16Post 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. - Whats the last step of the algorithm?
17Conclusions
- 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
18Future 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.
19Correction