Date | Description |
---|---|
September 28 |
Abstract data types; worst case running time MW 1.1-1.2, 2.1-2.4.2 |
September 30 | Big O, big Omega, big Theta; rules of sum and product for big O |
October 3 |
Dictionary ADT MW 4.1-4.3 |
October 5 |
Quicksort implemented recursively and using a stack MW 3.6 Quicksort handout |
October 7 | Dictionary implementations by unsorted and sorted arrays and linked lists; review of binary search trees |
October 10 |
AVL trees MW 4.4 |
October 12 | AVL trees: height, rotations |
October 14 | AVL trees: insert, remove |
October 17 |
AVL analyses; splay trees MW 4.5 |
October 19 | Splay trees |
October 21 |
Hashing: separate chaining MW 5.1-5.3 |
October 24 |
Hashing: open addressing, rehashing MW 5.4-5.5 |
October 26 |
Universal classes of hash functions; mergesort MW 7.6 Universal classes of hash functions |
October 28 | Mergesort analysis |
October 31 |
Graphs; topological sort MW 9.1-9.2 |
November 2 |
Topological sort analysis; breadth-first search MW 9.3 |
November 7 | Breadth-First search |
November 9 |
Introduction to parallelism DG 2-3 |
November 14 | Divide and conquer parallelism |
November 16 |
ForkJoin Framework; reductions and maps DG 4 |
November 18 |
Analyzing fork-join algorithms; prefix sum problem DG 5 |
November 21 | Parallel prefix, pack, quicksort |
November 23 |
Mutual exclusion and locks DG 6 |
November 28 |
Priority queues, heaps, insert MW 6.1-6.3 |
November 30 |
deleteMin, buildHeap, heapsort MW 7.5 |
December 2 |
Dijkstra's algorithm for least cost paths MW 9.3 |
December 5 | Dijkstra's algorithm: implementation and analysis |
December 7 |
Minimum spanning trees, Kruskal's algorithm, union/find MW 8.1-8.5, 9.5.2 |
December 9 | Kruskal's algorithm: implementation and analysis |