A New Approach to Learning Algorithms - Computer Science

boorishadamantΤεχνίτη Νοημοσύνη και Ρομποτική

29 Οκτ 2013 (πριν από 3 χρόνια και 9 μήνες)

77 εμφανίσεις

CATE, August 18, 2004

1

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

2

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

3

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

4

Standard Algorithm Visualization

1.
take the
description

of the algorithm (usually
the code in a programming language, e.g. C)

2.
graphically represent
data

in the code using
bars, points, etc.

3.
use animation to represent the
flow of control

4.
show the animated algorithm

5.
hope that the learner will now
understand

the
algorithm

CATE, August 18, 2004

5

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

6

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

7

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

8

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

9

Example: Selection Sort









Abstraction tree

selection

smallest

swap

CATE, August 18, 2004

10

Top Level of Abstra
ction


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

11

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

12

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

13

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

14

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

15

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

16

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

17

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

18

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

19

Correction


Kruskal

SET

PRIORITY
-
QUEUE

MERGE
-
FIND

Linked
-
Lists

Trees

merge

find