Discussion of possible directions:
(a) lectures/discussion/presentations on algorithms for specific problems, mainly from CLR advanced topics: e.g. string matching, network flow, parallel (multi-processor) algorithms, computational geometry, randomized algorithms, average-case analysis, linear programming, cryptography, NP-completeness, approximation algorithms...
(b) projects/presentations on empirical study of data structures and algorithms (ala DIMACS challenges);
(c) lectures/discussions/presentations on mathematical background - i.e. probability, generating functions, number theory.
Decided priority was (a) then (c) then (b). Only 3 students in class, so expect very interactive classes with student presentations and discussions.
Lecture: Rabin-Karp string matching algorithm.
Why integer flows are important: maximum matching, k-edge and k-vertex connectivity. (Mentioned using DFS to test 2-edge and 2-vertex connectivity.)
Edmonds-Karp (augmenting shortest paths): distances from the source in the residual graph are non-decreasing, each round saturates some edge, each edge is saturated O(V) times. thus at most O(VE) rounds, each round is O(V+E) time.