Sep. 29: |
Abstract data types (ADT); worst case running time (MW 2.1-2.4.2) |
Oct. 1: |
Big O, big Omega, big Theta; rules of sums and products
for big O (MW 2.1-2.4.2) |
Oct. 4: |
Dictionary ADT; implementations by unsorted and sorted arrays and linked lists |
Oct. 6: |
Quicksort implemented recursively (MW 7.7.1) and using a
stack (handout); review of binary search
trees (MW 4.3) |
Oct. 8: |
AVL trees: proof of logarithmic height (MW 4.4) |
Oct. 11: |
AVL trees: rotations and insertion (MW 4.4) |
Oct. 13: |
AVL trees: finish insertion, deletion, and analysis (MW 4.4) |
Oct. 15: |
Splay trees (MW 4.5) |
Oct. 18: |
Purpose of B-trees (MW 4.7); hashing (MW 5.1-5.3) |
Oct. 20: |
Hashing (MW 5.3-5.4) |
Oct. 22: |
Universal classes of hash functions
(handout); rehashing (MW 5.5); priority
queue ADT (MW 6.1) |
Oct. 25: |
Binary heaps (MW 6.2-6.3) |
Oct. 27: |
BuildHeap (MW 6.3.4); heapsort (MW 7.5) |
Oct. 29: |
Graphs and their representations (MW 9.1) |
Nov. 1: |
Topological sort (MW 9.2) |
Nov. 3: |
Breadth-first search and unweighted shortest paths (MW 9.3.1) |
Nov. 5: |
Midterm exam |
Nov. 8: |
Dijkstra's algorithm (MW 9.3.2) |
Nov. 10: |
Dijkstra's algorithm: heap implementation and analysis (MW 9.3.2) |
Nov. 12: |
Fork-join parallelism: introduction (DG 2.1-3.2) |
Nov. 15: |
Fork-join parallelism: divide and conquer (DG 3.3-3.6) |
Nov. 17: |
Fork-join parallelism: time analysis, parallel prefix (DG 4.1-5.1) |
Nov. 19: |
Fork-join parallelism: pack, quicksort (DG 5.2-5.3) |
Nov. 22: |
Concurrency: introduction, locks (DG 6) |
Nov. 24: |
Snow closure |
Nov. 26: |
Thanksgiving holiday |
Nov. 29: |
Concurrency: race conditions (DG 7.1, 8) |
Dec. 1: |
Concurrency: deadlock (DG 9), data race (DG 7.2), reader/writer
locks (DG 10.1) |
Dec. 3: |
Kruskal's algorithm (MW 9.5.2) |
Dec. 6: |
Union/find (MW 8.1-8.4) |
Dec. 8: |
Union/find: path compression (MW 8.5); Kruskal's algorithm: analysis (MW 9.5.2) |
Dec. 10: |
Mergesort; solving simple recurrences (MW 7.6.1, DG 5.3) |
Dec. 14: |
Final exam
|