background a starting handout.

basics with an array-shift algorithm.

sorts big-O notation introduced, selection sort, bubble sort, insertion sort.

shellsort (if you read this you will see that I never really understood it).

big-O lots of detail and explanation.

mergesort long worked example.

quicksort long worked example, with a nice version of the algorithm (P5, p42).

binary chop with all the pitfalls mapped.

hashing including why linear rehash is good enough (which now Wikipedia says is wrong, so I must be wrong there).

circular shift an old favourite of mine.

trees with AVL trees and B-trees, using dictionaries as the application.

implementation of B-trees because they are lovely, and my friend Keith Clarke loves them.

graphs marking, searching, inc. Dijkstra's algorithm and A-star. The remark about the London Underground path-finding machine is factually correct, but for reasons I don't understand its paths are sometimes the fastest even when every Londoner (i.e. me) knows they shouldn't be.

heaps (as in heapsort) a wonderful data structure, that I recommend to all.