COMP 731 - Data Structures and Algorithms - Term 1 of 2000
General Information
- 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%
Problem Sets
Lectures
- 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)