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
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
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 sets Marking program is just a part of final mark
exercises… for instance 1 st part of the exercise, code stub
exercises… for instance 1 st 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
-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?
-Mostly good -Surprising number are excellent -Thanks to 1 st year and 1 st semester
The End and yes it was all my own work
… just me, and these people Alice Miller David Manlove David Watt Tom Kelly Geoffrey Ciaran Jeremy Singer Paul Cockshott David Andrew Andy Brooks Rob Irving Gethin Norman Gail Reat Karen Renaud Peter Nightingale Andrea & Zoe Stewart 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 … This is NOT in order
Sorting, what’s that then? Given a collection of data, get it into order … This is IS in order
Sorting, what’s that then? Given a collection of data, get it into order … This is IS in order It’s in ascending order
Sorting, what’s that then? Sorting is the process of going from this to that
Sorting, why bother? Who cares? You can find things quicker!
Sorting, why bother? 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 Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example Are you tired yet? Bored?
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort 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 Example i=8
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare i=8 j=0
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=8 j=0
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=8 j=1
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=8 j=1
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=8 j=2
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=8 j=2
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=8 j=3
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=8 j=3
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=8 j=4
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=8 j=4
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=8 j=5
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=8 j=5
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=8j=6
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=8j=6
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=8j=7
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=8j=7
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example sorting Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare sorting Example i=7 j=0
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=7 j=1
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=7 j=1
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=7 j=2
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap sorting Example i=7 j=2
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare sorting Example i=7 j=3
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap sorting Example i=7 j=3
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare sorting Example i=7 j=4
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap sorting Example i=7 j=4
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare sorting Example i=7j=5
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare sorting Example i=7j=6
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap sorting Example i=7j=6
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare sorting Example i=6j=0
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=6j=0
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=6j=1
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=6j=2
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=6j=2
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=6j=3
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=6j=3
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=6j=4
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=6j=5
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=6j=5
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=5j=0
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=5j=1
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=5j=2
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example swap Example i=5j=2
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=5j=3
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=5j=4
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=4j=0
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=4j=1
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=4j=2
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example compare Example i=4j=3
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort Example
Quadratic algorithms bubble sort insertion sort selection sort sorting Bubble Sort 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 A Such that A[0] is the 1 st 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 A Such that A[0] is the 1 st 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 A Such that A[0] is the 1 st number and A[n-1] is the last 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 A Such that A[0] is the 1 st number and A[n-1] is the last 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 A Such that A[0] is the 1 st number and A[n-1] is the last 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 A Such that A[0] is the 1 st number and A[n-1] is the last 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 N 2
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 N 2 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 N 2 To sort 10 numbers will take 100 units of time To 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 N 2 To sort 10 numbers will take 100 units of time To sort 100 numbers will take 10,000 units of time To 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
Barak on Sorting
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