CS157:   Design and Analysis of Algorithms
Lectures

Date Topics Readings Due
1/24/08 Greedy Algorithms: Huffman codes using letter frequencies. CLR Section 16.3 Nil
1/29/08 Greedy: Huffman codes correctness. Data structures: Heaps. CLR Chapter 6 Nil
1/31/08 Greedy: Dijkstra. CLR Sections 24.2, 24.3, and 24.5 Nil
2/5/08 Greedy: Prim's algorithm. CLR Chapter 23 Homework 1
2/7/08 Greedy: Kruskal's algorithm. CLR Chapter 21 Nil
2/12/08 Data structures: Union-Find (also Erickson's notes). CLR Chapter 21 Problem Set 1
2/14/08 Data structures: Union-Find (end). CLR Chapter 21 Problem Set 1
2/19/08 No class
2/21/08 Divide-and-conquer, Analysis of Quicksort. CLRS 2.3, 7 HW 2
2/26/08 Divide-and-conquer: Fast Fourier Transform (FFT.pdf). CLRS 30 TBA
2/28/08 Divide-and-conquer: Median-finding algorithm (median.pdf) CLRS 9 PS 2
3/4/08 Midterm 1
3/6/08 Correction of Midterm 1
3/11/08 Divide-and-conquer: Strassen's algorithm, closest pair CLRS 28.2, 33.4. Practice exercise: 28.2-6 HW 3
3/13/08 Dynamic programming: sequence alignment CLRS Problem 15-3
3/18/08 Dynamic programming: all pairs shortest paths CLRS 25 PS 3
3/20/08 Dynamic programming: Viterbi's algorithm CLRS Problem 15-5
3/25/08 No class
3/27/08 No class
4/1/08 Midterm 2
4/3/08 Midterm 2 solution
4/8/08 Lower bounds: decision trees, adversary, sorting, binary search CLRS 8.1. PS4
4/10/08 Flows: Ford-Fulkerson CLRS 26
4/15/08 Flows: Edmonds-Karp CLRS 26 HW5
4/17/08 Linear programming duality CLRS 29
4/22/08 Linear programming CLRS 29
4/24/08 Online algorithms
4/29/08 NP-completeness CLRS 34 PS5
5/1/08 Approximation algorithms CLRS 35



Topics

  • Complexity and running times, asymptotic notations (quick review).
  • Greedy algorithms: interval scheduling, minimum spanning tree (Prim, Kruskal), shortest paths (Dijkstra).
  • Tree data structures: heaps (for Prim and Dijkstra), union find (for Kruskal) with the n log*n analysis.
  • Sorting: Mergesort (quick review), Quicksort (quick review), Randomized quicksort (rigorous analysis), sorting lower bound, counting sort.
  • Divide-and-conquer: closest-pair, FFT (applied to polynomial multiplication), Randomized median selection, Matrix multiplication (Strassen).
  • Matrix algorithms.
  • Dynamic programming: Matrix-chain multiplication, sequence alignment, Markov reward/decision processes, Viterbi's algorithm.
  • More data structures: B trees and hashing data structures.
  • Network algorithms: Flows, matchings.
  • Local search algorithms.