- Phillip Rogaway - your teacher - OH: Tues Wed Thur from 4:30-5:30 - rogaway@cs.ucdavis.edu
- We will cover topics selected from CLR chapters 1-4, 7-13, 15-27, 34-35, 37, as well as material from other sources.
- Readings (other than CLR): Manber: 8 (binomial heaps) and 9 (Fibonacci heaps), 10 (union-find) and 13 (Treaps). Weiss: 4.4 (AVL Trees) and 4.5 (Splay trees),
- Grading: Homeworks: 25% - Attendance: 10% - Final: 65%

- Assignment 1 and its input file
- Assignment 2 and Solutions to Assignment 2
- Assignment 3
- Assignment 4 and a small file to run it on
- Assignment 5 and a data set to run it on

- Lecture 1 - Fri, June 23 - Introduction. Stacks (part 1) (1; 1)
- Lecture 2 - Mon, June 25 - Stacks (part 2) (1; 2)
- Lecture 3 - Tue, June 26 - Stacks (part 3). Big-O (1.5; 3.5)
- Lecture 4 - Wed, June 27 - Big-O, Theta. Heaps (part 1) (1; 4.5)
- Lecture 5 - Mon, July 3 - Heaps (part 2) (1; 5.5)
- Lecture 6 - Tue, July 4 - Mergesort and recurrences (1.5; 7)
- Lecture 7 - Thu, July 6 - Solving recurrence relations. Divide-and-conquer (part 2) (1.5; 8.5)
- Lecture 8 - Fri, July 7 - Hints for Problem Set 1. Quicksort (1; 9.5)
- Lecture 9 - Tue, July 11 - Analysis of Quicksort. Start Selection (1.5; 11)
- Lecture 10 - Thu, July 13 - Probabilistic and deterministic selection (1.5; 13)
- Lecture 11 - Fri, July 14 - Graph terminology. MST, Kruskal's (1; 14)
- Lecture 12 - Thu, July 20 - Kruskal's algorithm, Union-Find ADT, implementing Union-Find (1.5; 15.5)
- Lecture 13 - Fri, July 21 - Union-Find heuristics (1; 16.5)
- Lecture 14 - Tue, July 24 - Analysis of Collapsing-Find (1.5; 18)
- Lecture 15 - Thu, Aug 3 - Programming style/abstraction: soln to PS3 (2; 20)
- Lecture 16 - Fri, Aug 4 - Binomial heaps. Fibonacci heaps (2; 22)
- Lecture 17 - Tue, Aug 8 - Finish F-heaps. Prim's algorithm (1.5; 23.5)
- Lecture 18 - Thu, Aug 10 - Explanation of PS#4. Hashing. (1.75; 25.25)
- Lecture 19 - Fri, Aug 11 - Applications of hashing. Binary search trees. (1.25; 26.5)
- Lecture 20 - Tue, Aug 15 - Tree traversals. AVL trees (1.5; 28)
- Lecture 21 - Thu, Aug 17 - Number of nodes in an AVL tree. Splay trees (1.5; 29.5)
- Lecture 22 - Fri, Aug 18 - Dynamic programming: Change Making (1; 30.5)
- Lecture 23 - Tue, Aug 29 - Dynamic programming: Matrix Chain Multiplication (1.5; 32)
- Lecture 24 - Thu, Aug 31 - Dynamic programming: Subset Sum (1.5; 33.5)
- Lecture 25 - Fri, Sep 1 - Dynamic programming: Longest Common Subsequence (1.5; 35)
- Lecture 26 - Tue, Sep 5 - Dynamic programming: Thief's problem (student's devise soln) (1.5; 36.5)
- Lecture 27 - Thu, Sep 7 - Max Flow. Ford-Fulkerson algorithm. Max-Flow/Min-Cut Theorem (1.5; 38)
- Lecture 28 - Fri, Sep 8 - Edmonds-Karp algorithm. Checkers. Applications of Max Flow (1; 39)
- Lecture 29 - Thu, Sep 14 - String matching with Finite Automata. (1; 40.5)
- Lecture 30 - Fri, Sep 15 - The KMP algorithm. (1; 41.5)
- Lecture 31 - Tue, Sep 19 - Huffman codes, Lempel-Ziv compressin, zip/gzip. (1; 43)
- Lecture 32 - Thu, Sep 21 - The Hardness of Subset Sum. (1; 44.5)