Date Lecture References Misc
Lecture #1
Mon 16/01
Introduction to the course; administrative details; algorithms for integer multiplication - what constitutes a good algorithm?
[slides]
  • Section 0.2 - Erickson
PS0 released
Lecture #2
Tue 17/01
Stable marriage problem; Gale-Shapley algorithm and examples
[slides]
  • Section 1.1 - [KT]
Lecture #3
Wed 18/01
Gale-Shapley algorithm - proof of correctness; properties of the solution and proof of optimality
[slides]
  • Section 1.1 - [KT]
Tutorial #1
Fri 20/01
Based on Problem set 0
Lecture #4
Mon 23/01
Recall of asymptotic analysis; Divide-and-conquer - Karatsuba's algorithm, recurrence relations, recurrence trees, master theorem
[slides]
  • Section 1.9 - Erickson
  • Section 2.1, 2.2 - [DPV]
  • Chapter 3 - [CLRS] (asymptotic notation)
  • Section 4.6 - [CLRS] (for a proof of the master theorem)
PS1 released
Lecture #5
Tue 24/01
Order statistics - finding the \(k^{th}\) smallest element; median-of-medians - recursive solution, analyzing the recurrence using recursion trees
[slides]
  • Section 1.8 - Erickson
Lecture #6
Wed 25/01
Convolution of vectors; equivalence with polynomial multiplication; evaluating polynomials on mulitple points; FFT algorithm
[slides]
Lecture #7
Mon 30/01
FFT algorithm (contd.); Closest pair of points in 2D
[slides]
  • Section 2.6 - [DPV]
  • FFT notes - Erickson
  • Section 5.4 - [KT]
PS2 released
Lecture #8
Tue 31/01
Basic graph algorithms; adjacency matrices and lists; graph traversals - DFS
[slides]
  • Sections 3.1, 3.2 - [DPV]
  • Chapter 5 - Erickson
Tutorial #2
Wed 01/02
Discussion of Problem Sets 1 and 2
Mini-quiz #1
Fri 03/02
Based on material covered in Problem sets 0, 1, 2
Lecture #9
Mon 06/02
BFS; finding connected components in graphs; digraphs - classification of edges
[slides]
  • Sections 3.2, 3.3 - [DPV]
  • Sections 6.1, 6.2 - Erickson
PS3 released
Lecture #10
Tue 07/02
DFS with clocks - classification of edges; Topological ordering of DAGs
[slides]
  • Section 3.3 - [DPV]
  • Section 6.3 - Erickson
Lecture #11
Wed 08/02
Digraphs and their strongly connected components; Finding and labelling the strongly connected components of a digraph
[slides]
  • Section 3.4 - [DPV]
  • Sections 6.5, 6.6 - Erickson
Tutorial #3
Fri 10/02
Discussion of Problem set 3
Lecture #12
Mon 13/02
Finding and labelling strongly connected components - Kosaraju-Sharir algorithm; Shortest paths in graphs - BFS
[slides]
  • Sections 3.4,4.2 - [DPV]
  • Sections 6.6,8.4 - Erickson
PS4 released
Lecture #13
Tue 14/02
Shortest path in unweighed graphs - BFS (contd); Shortest paths in DAGs
[slides]
  • Sections 4.2,4.7 - [DPV]
  • Sections 8.4,8.5 - Erickson
Lecture #14
Wed 15/02
Shortest path in graphs - Dijkstra's algorithm
[slides]
  • Section 4.4 - [KT]
  • Section 4.4 - [DPV]
  • Section 8.6 - Erickson
Tutorial #4
Fri 17/02
Discussion of Problem set 4
Lecture #15
Mon 20/02
Shortest path in graphs - Dijkstra's algorithm (contd), Bellman-Ford algorithm
[slides]
  • Section 4.4 - [KT]
  • Section 4.4 - [DPV]
  • Sections 8.6,8.7 - Erickson
Quiz #1
Tue 21/02
Based on material covered till Mon Feb 13
Lecture #16
Wed 22/02
Bellman-Ford algorithm (contd)
[notes]
  • Section 8.7 - Erickson
Lecture #17
Fri 24/02
Greedy algorithms - interval scheduling
[notes]
  • Section 4.1 - [KT]
Lecture #18
Mon 27/02
Greedy algorithms - scheduling jobs to minimize delays; exchange arguments
  • Section 4.2 - [KT]
PS5 released
Lecture #19
Tue 28/02
Greedy algorithms - scheduling jobs to minimize delays; exchange arguments; greedy vertex cover
[notes]
  • Section 4.2 - [KT]
Lecture #20
Wed 01/03
Huffman coding - optimal prefix codes and binary trees
[notes]
  • Section 4.8 - [KT]
Tutorial #5
Fri 03/03
Discussion of Problem set 5
Lecture #21
Mon 06/03
Huffman coding - algorithm and proof of correctness
[notes]
  • Section 4.8 - [KT]
PS6 released
Lecture #22
Tue 07/03
Huffman coding - implementation details; Minimum spanning trees - cut property
[notes]
  • Sections 4.5, 4.8 - [KT]
  • Section 7.1 - Erickson
Mini-quiz #2
Fri 10/03
Based on Problem sets 5 and 6
Lecture #23
Mon 13/03
Minimum spanning trees - proof of the cut property; Boruvka's algorithm
[notes]
  • Sections 7.2, 7.3 - Erickson
PS7 released
Lecture #24
Tue 14/03
Prim's and Kruskal's algorithms - examples, implementation details, running time
[notes]
  • Sections 7.4, 7.5 - Erickson
Lecture #25
Wed 15/03
Kruskal's algorithm - amortized analysis; data structures for disjoint sets
[notes]
  • Section 7.5 - Erickson
Tutorial #6
Fri 17/03
Discussion of Problem set 7
Quiz #2
Tue 21/03
Based on material covered through Problems sets 5,6,7
Lecture #26
Fri 24/03
Union-by-rank with path compression; Amortized analysis - accounting method
[notes]
  • Section 5.1.4 - [DPV]
Lecture #27
Mon 27/03
Union-by-rank with path compression - amortized analysis
[notes]
  • Section 5.1.4 - [DPV]
Lecture #28
Tue 28/03
Dynamic programming - text segmentation
[notes]
  • Sections 3.3, 3.4 - Erickson
Lecture #29
Wed 29/03
Dynamic programming - text justification, edit distance
[notes]
  • class notes
PS8 released
Tutorial #7
Fri 31/03
Discussion of Problem set 8
Lecture #30
Mon 03/04
Dynamic programming - edit distance; saving space using divide-and-conquer
[notes]
  • Section 3.7 - Erickson
  • Sections 6.6, 6.7 - [KT]
Lecture #31
Wed 05/04
Dynamic programming - edit distane (contd.); 0-1 Knapsack - pseudopolynomial-time algorithm
[notes]
  • Sections 6.6, 6.7 - [KT]
Online lecture - video link on Zulip
Lecture #32
Mon 10/04
0-1 Knapsack - pseudopolynomial-time algorithm (contd.); Dynamic programming on trees - independent sets
[notes]
  • Section 3.10 - Erickson
Lecture #33
Tue 11/04
All Pairs Shortest Paths (APSP) - Johnson's algorithm; Dynamic programming based algorithms
[notes]
  • Sections 9.4, 9.5, 9.6 - Erickson
Lecture #34
Wed 12/04
Floyd-Warshall algorithm; APSP and matrix multiplication
[notes]
  • Sections 9.7, 9.8 - Erickson
Lecture #35
Mon 17/04
APSP and matrix multiplication - Seidel's algorithm; Introduction to computational intractability
[notes]
PS9 released
Lecture #36
Tue 18/04
Introduction to intractability - P and NP; poly-time solving versus poly-time verification
[notes]
  • Sections 34.1, 34.2 - [CLRS]
  • Sections 12.1, 12.2 - Erickson
Lecture #37
Wed 19/04
Polynomial-time reductions - NP completeness, examples of reductions
[notes]
  • Chapter 12 - Erickson
Mini-quiz #3
Fri 21/04
Based on Problem set 8
Lecture #38
Mon 24/04
NP-completeness - examples of reductions
[notes]
  • Chapter 12 - Erickson
PS10 released
Lecture #39
Tue 25/04
Beyond NP-completeness - brief overview; Wrap-up of the course
Mini-quiz #4
Wed 26/04
Based on Problem set 9