Week 1:
Jan 7: Introduction, Order notation, Growth of functions:
Introduction to Running time analysis [Sec 2.2]
Asymptotic notation (Big oh, Theta, Omega) [Sec 3.1]
Logs and polynomials [Sec 3.2]
Summations of arithmetic and geometric series [Appendix A]
Jan 9: Recurrences and Solution techniques
Iteration method, Substitution method, (Simplified) Master method,
Applications of Master method [Chapter 4].
Proof techniques: Induction, Contradiction, Contrapositive,
Counterexample, and Construction.
Bounding summations: upper bound by bounding each term, and lower
bound by splitting the sum and bouding the upper half, and
Approximation by integrals [Appendix A.2].
Week 2:
Jan 14: Divide-and-conquer method:
Proofs of correctness of loops using loop invariants,
Correctness of Merge (in Merge sort) and Partition (in Quick sort)
procedures. Correctness and Running time analysis of Merge sort.
Jan 16: Quick sort algorithm.
Selection problem (finding kth smallest element): DAC algorithm
using Partition of Quick sort. Expected running time of Quick sort
is O(n log n) and randomized select is O(n).
Week 3:
Jan 23: Overview of sorting, Linear time sorting
algorithms for special inputs (Counting sort, Radix sort, Bucket sort),
n log n lower bound for comparison based sorting using decision trees.
Week 4:
Jan 28 Dynamic programming (Dr. Chandrasekaran)
Jan 30 Dynamic programming (Dr. Chandrasekaran)
Week 5:
Feb 04 Dynamic programming (Dr. Chandrasekaran)
Feb 6: Discussion of Assignment 1, Memoization example.
Week 6:
Feb 11: Review.
Feb 13: Exam 1.
Week 7:
Feb 18 Activity selection problem: DP and greedy algorithm.
Feb 20 Huffman coding problem.
Week 8:
Feb 25 Graphs: terms, adjacency lists and adjacency matrices.
Depth-first search (DFS) algorithm; finding the topological ordering of the vertices of a DAG.
Feb 27 Properties of DFS: life times of vertices,
Parenthesis property, white path theorem. Classification of edges into
tree/back/forward/cross edges based on DFS. Proof of correctness of
DFS-based topological sort algorithm. Bridges and cut vertices in an
undirected graph. Sample execution to find bridges and cut vertices.
Week 9:
Mar 3 Finding bridges and cut vertices. BFS.
Mar 5 Identifying bipartite graphs using BFS.
Week 10:
Mar 17: Review
Mar 19: Exam 2
Week 11:
Mar 24 Minimum spanning trees: greedy algorithms.
Mar 26 Minimum spanning trees: proof of correctness, Implementation of Prim's algorithm.
Week 12:
Mar 31 Minimum spanning trees: Implementation of Kruskal's algorithm, Disjoint set Union/Find data structure.
Apr 2 Single-source shortest paths problem; Bellman-Ford Algorithm.
Week 13:
Apr 7 SSSP: Dijkstra's algorithm, example, proof of correctness. A recurrence for ll-pairs shortest paths
Apr 9 Algorithms for APSP.
Week 14:
Apr 14 Floyd-Warshall example, detecting negative cycles, Maximum flow problem example.
Apr 16 DAG-shortest paths, Proof of correcteness of maximum flow algorithm.
Week 15:
Apr 21 Extensions and applications of maximum flow.
Apr 23 NP-completeness, 3-CNF-SAT to Clique, Clique to Vertex cover reductions.
Week 16:
Apr 28 Final exam review.