II. Divide and Conquer. Example: Closest Points (35.4)
III. Recurrence Relations (4.1-4.3)
IV. Dynamic Programming: 0/1 Knapsack (16.1-16.3)
V. Greedy Algorithms (17.1-17.2, Handout A: Stable Marriage)
VI. Hashing (12.1-12.3)
VII. Union-Find data structure (22.1-22.3)
VIII. Graph Algorithms (23,24,25.1,25.2,26.1,26.2)
IX Data Compression (17.3, Handout B: Lempel-Ziv, application:gzip)
X. String Matching (34.1, Handout C: Z-Algorithm)
XI. Hard Problems (36)
XII. Convex Hulls (35.3) (if time permits)