reflections of ads2 2011. “there has never been a better time to teach computer science” patrick...

Post on 18-Jan-2016

220 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Reflections of ADS2 2011

“There has never been a better time to teach Computer Science”

Patrick Prosser 2011

Course home page

course content

Course content

Course content

Course content

Aims & Objectives

Aims and objectives

- Learn about algorithms and data structures in java (surprised?)- Implement algorithms and data structures- Apply algorithms and data structures

Ulterior motives

- To be scientific- To be an engineer- To be a mechanic- To appreciate beauty

- neat, tidy, small, simple, efficient, fast, …- To think critically

- Costs and benefits- To do experiments (wherever possible)- Use big data sets (where possible)- “Teach yourself programming in 10 years”- To have fun

We are always learning

exercises

exercises

5 exercises, 2 are assessed, plus a zero exercise and a challenge

exercises… for instance

In 2 parts, implement a circular queue then use this to implement a sorting algorithm.Readme files, slides, hints and tips, code stubs to get started.There is a Test program (always is), a marking program (compiled), and data setsMarking program is just a part of final mark

exercises… for instance

1st part of the exercise, code stub

exercises… for instance

1st part of the exercise, code stub

Experiments in the Lecture

Experiments on the bench (in lecture)

- The effect of the wrong data structure- Using the IMDB data sets at Robert Sedgewick’s

Experiments on the bench (in lecture)

- The effect of the wrong data structure- Using the IMDB data sets at Robert Sedgewick’s

Experiments on the bench (in lecture)

- The effect of the wrong data structure- Using the IMDB data sets at Robert Sedgewick’s

Not a small effort … for only a part of a lecture!

Experiments on the bench (in lecture)

On Recursion

A small effort … for a part of a lecture Perm, power set, H-tree, binary tree, …

Experiments on the bench (in lecture)The growth of functions

Part of a lecture: editing and running code, using gnuPlot in the class, going off-topic(i.e. general effect of exponential growth “what does 3% economic growth mean?”)

Experiments on the bench (in lecture)Binary search

A demo that shows how search proceeds

Using unixWords (about 400,000 words)

A small effort … for a very small part of a lecture!

Experiments on the bench (in lecture)Is Big-Oh all there is to it?

A considerable effort … for only part of a lecture

Experiments on the bench (in lecture)Binary Search Trees v AVL Trees

Hashing (different functions)

Etc …

The students have lapTops

lapTops in the lectures

Now that we have won the lottery, what shall we do about the begging letters?

lapTops in the lectures

We shall keep sending them

lapTops in the lectures

What should we do with student lapTops in the lecture theatre?

The lecture theatre

Boyd Orr Lecture Theatre 2

Boyd Orr Lecture Theatre 2

- 3 screens with 3 data projectors- 3 vizualisers- Internet connected pc- Desk top lapTop connection- Lectern/desk that goes up and down- Sound system- On the ground floor, near to toilets, hopping distance from SAWB

Boyd Orr Lecture Theatre 2

I love BO2

Boyd Orr Lecture Theatre 2

I love the smell of Napalm in the morning ….

Boyd Orr Lecture Theatre 2

I love the visualizers …

- To use instead of a black/white board- To put things underneath (such as bits of paper)- … or lego- ….or stuff

I use all of BO2

We videoed all the lectures

… and what happened?

We videoed all the lectures

Attendance fell (but hey, Stanford ended up with 20 physical students)

40% < 40%

attendance

Swipe that!

What about the students?

What about the students?

- Mostly good- Surprising number are excellent- Thanks to 1st year and 1st semester

The End

and yes

it was all my own work

… just me, and these people

Alice MillerDavid ManloveDavid WattTom KellyGeoffreyCiaranJeremy SingerPaul CockshottDavidAndrewAndy BrooksRob IrvingGethin NormanGail ReatKaren RenaudPeter NightingaleAndrea & ZoeStewart McNeil…

“This is the best time to teach CS”

An example, using sorting

Sorting, what’s that then?

Given a collection of data, get it into order …

Sorting, what’s that then?

Given a collection of data, get it into order …

9 2 6 0 4 3 2 7 5

This is NOT in order

Sorting, what’s that then?

Given a collection of data, get it into order …

0 2 3 4 5 6 7 9

This is IS in order

Sorting, what’s that then?

Given a collection of data, get it into order …

0 2 3 4 5 6 7 9

This is IS in order

It’s in ascending order

Sorting, what’s that then?

Sorting is the process of going from this

0 2 3 4 5 6 7 9

9 2 6 0 4 3 2 7 5

to that

Sorting, why bother?

9 2 6 0 4 3 2 7 5

Who cares?

You can find things quicker!

Sorting, why bother?

0 2 3 4 5 6 7 9

9 2 6 0 4 3 2 7 5

Who cares?

You can find things quicker!

Use “binary search” (or even linear search and stop early)

Some algorithms for sorting

• bubble sort• insertion sort• selection sort• shell sort• gnome sort• merge sort• quick sort• heap sort• radix sort• bead sort

sorting

Some algorithms for sorting

• bubble sort• insertion sort• selection sort• shell sort• gnome sort• merge sort• quick sort• heap sort• radix sort• bead sort

sorting

quadratic

Some algorithms for sorting

• bubble sort• insertion sort• selection sort• shell sort• gnome sort• merge sort• quick sort• heap sort• radix sort• bead sort

sorting

logarithmic

Some algorithms for sorting

• bubble sort• insertion sort• selection sort• shell sort• gnome sort• merge sort• quick sort• heap sort• radix sort• bead sort

sorting

linear

Some algorithms for sorting

• bubble sort• insertion sort• selection sort• shell sort• gnome sort• merge sort• quick sort• heap sort• radix sort• bead sort

sorting

Our example

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

9 2 06 4 3 2 57

Example

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

9 2 06 4 3 2 57

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 9 06 4 3 2 57

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 9 06 4 3 2 57

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 09 4 3 2 57

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 09 4 3 2 57

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 90 4 3 2 57

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 90 4 3 2 57

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 9 3 2 57

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 9 3 2 57

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 9 2 57

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 9 2 57

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 9 57

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 9 57

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 59

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 59

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 95

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 95

Example

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 95

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 95

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 46 3 2 7 95

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 46 3 2 7 95

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 64 3 2 7 95

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 64 3 2 7 95

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 6 2 7 95

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 6 2 7 95

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 7 95

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 7 95

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 7 95

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 5 97

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 5 97

Example

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 5 97

Example

Are you tired yet? Bored?

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 5 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 34 2 6 5 97

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 34 2 6 5 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 34 2 6 5 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 43 2 6 5 97

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 43 2 6 5 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 6 5 97

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 6 5 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 6 5 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 5 6 97

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 5 6 97

Example

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 5 6 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 5 6 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 5 6 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

swap

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

Phew!

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

On an Array

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

9 2 06 4 3 2 57

Example

i=8

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

9 2 06 4 3 2 57

Example

compare

i=8j=0

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 9 06 4 3 2 57

Example

swap

Example

i=8j=0

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 9 06 4 3 2 57

Example

compare

ExampleExample

i=8j=1

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 09 4 3 2 57

Example

swap

ExampleExampleExample

i=8j=1

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 09 4 3 2 57

Example

compare

ExampleExampleExampleExample

i=8j=2

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 90 4 3 2 57

Example

swap

ExampleExampleExampleExampleExample

i=8j=2

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 90 4 3 2 57

Example

compare

ExampleExampleExampleExampleExampleExample

i=8j=3

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 9 3 2 57

Example

swap

ExampleExampleExampleExampleExampleExampleExample

i=8j=3

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 9 3 2 57

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExample

i=8j=4

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 9 2 57

Example

swap

ExampleExampleExampleExampleExampleExampleExampleExampleExample

i=8j=4

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 9 2 57

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=8j=5

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 9 57

Example

swap

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=8j=5

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 9 57

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=8j=6

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 59

Example

swap

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=8j=6

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 59

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=8j=7

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 95

Example

swap

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=8j=7

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 95

Example sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 95

Example

compare

sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=0

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 6 40 3 2 7 95

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=1

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 46 3 2 7 95

Example

swap

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=1

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 46 3 2 7 95

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=2

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 64 3 2 7 95

Example

swap

sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=2

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 64 3 2 7 95

Example

compare

sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=3

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 6 2 7 95

Example

swap

sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=3

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 6 2 7 95

Example

compare

sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=4

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 7 95

Example

swap

sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=4

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 7 95

Example

compare

sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=5

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 7 95

Example

compare

sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=6

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 5 97

Example

swap

sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=7j=6

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 5 97

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

2 0 34 2 6 5 97

Example

compare

sortingExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=6j=0

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 34 2 6 5 97

Example

swap

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=6j=0

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 34 2 6 5 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=6j=1

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 34 2 6 5 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=6j=2

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 43 2 6 5 97

Example

swap

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=6j=2

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 43 2 6 5 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=6j=3

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 6 5 97

Example

swap

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=6j=3

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 6 5 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=6j=4

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 6 5 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=6j=5

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 5 6 97

Example

swap

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=6j=5

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 5 6 97

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 5 6 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=5j=0

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 5 6 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=5j=1

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 23 4 5 6 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=5j=2

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

swap

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=5j=2

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=5j=3

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=5j=4

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=4j=0

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=4j=1

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=4j=2

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

compare

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

i=4j=3

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

ExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExampleExample

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

0 2 32 4 5 6 97

Example

Phew!

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

On an Array

Can we visualize this?

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

On an Array

Can we visualize this?

Assume we have a random list of numbers from 0 to n-1, put in an array ASuch that A[0] is the 1st number and A[n-1] is the last

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

On an Array

Can we visualize this?

Assume we have a random list of numbers from 0 to n-1, put in an array ASuch that A[0] is the 1st number and A[n-1] is the last

9 2 06 4 3 2 57

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

On an Array

Can we visualize this?

Assume we have a random list of numbers from 0 to n-1, put in an array ASuch that A[0] is the 1st number and A[n-1] is the last

9 2 06 4 3 2 57

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

On an Array

Can we visualize this?

Assume we have a random list of numbers from 0 to n-1, put in an array ASuch that A[0] is the 1st number and A[n-1] is the last

9 2 06 4 3 2 57

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

We could plot A[i] on a graph as a point with x/y coordinates i/A[i]

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

On an Array

Can we visualize this?

Assume we have a random list of numbers from 0 to n-1, put in an array ASuch that A[0] is the 1st number and A[n-1] is the last

9 2 06 4 3 2 57

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

We could plot A[i] on a graph as a point with x/y coordinates i/A[i]

Do this as the algorithm progress to see how it progresses.

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

On an Array

Can we visualize this?

Assume we have a random list of numbers from 0 to n-1, put in an array ASuch that A[0] is the 1st number and A[n-1] is the last

9 2 06 4 3 2 57

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

We could plot A[i] on a graph as a point with x/y coordinates i/A[i]

Do this as the algorithm progress to see how it progresses.

Ready?

Quadratic algorithms

• bubble sort• insertion sort• selection sort

sorting

Bubble Sort

On an Array

sorting

Bubble Sort

Show me more!

sorting

Bubble Sort

Show me more!

• different sorting algorithms and relative performance• a beauty contest

• what is the “sound” of sorting?• can you show me it by mime? Expressive dance?

sorting

Bubble Sort

NOTE to self:Bubble sort is a quadratic time algorithm.If I have to sort a data set of N objects the run time will be proportional to N2

sorting

Bubble Sort

NOTE to self:Bubble sort is a quadratic time algorithm.If I have to sort a data set of N objects the run time will be proportional to N2

To sort 10 numbers will take 100 units of time

sorting

Bubble Sort

NOTE to self:Bubble sort is a quadratic time algorithm.If I have to sort a data set of N objects the run time will be proportional to N2

To sort 10 numbers will take 100 units of timeTo sort 100 numbers will take 10,000 units of time

sorting

Bubble Sort

NOTE to self:Bubble sort is a quadratic time algorithm.If I have to sort a data set of N objects the run time will be proportional to N2

To sort 10 numbers will take 100 units of timeTo sort 100 numbers will take 10,000 units of timeTo sort 1000 numbers will take 1,000,000 units of time

Links

• sorting algorithm animation• sound of sorting (part 1)• sound of sorting (part 2)• bubble sort by folk dancing

I think there has never been a better time to teach Computer Science

end of part 1

Live dangerously … live like a teacher, like a Physics teacher,or Chemistry, or Biology, or …

Live dangerously

top related