- Algorithm Design by Kleinberg and Tardos
- Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
- Algorithms by Dasgupta, Papadimitriou, Vazirani online copy

Teaching assistants: Archit Chauhan, Adwitee Roy, Ashwani Anand, Satyaprakash Nayak, A. R. Sricharan

- Aug 17 [GP]: Introduction, Euclid's GCD algorithm
- Aug 24 [GP]: Analysis of Euclid's GCD algorithm, Sorting: Insertion sort
- Sept 1 [GP]: Asymptotic notation (Section 3.1 of CLRS)
- Sept 1 [PN]: Heapsort (Sections 6.1-6.4 of CLRS)
- Sept 5 [PN]: Quicksort (Sections 7.1,7.2,7.4 of CLRS)
- Sept 8 [PN]: Analysis of quicksort, Omega(n log n) lower bound on sorting using comparisons, counting sort (Sections 8.1, 8.2 of CLRS)
- Sept 11 [PN]: Radix sort (Section 8.3 CLRS)
- Sept 15 [GP]: Divide-and-conquer: Merge sort, integer multiplication
- Sept 19 [PN]: Median and order statistics: Selection in linear time (Sections 9.1, 9.3 CLRS)
- Sept 22 [PN]: Dynamic programming: The rod cutting problem (Section 15.1 CLRS)
- Sept 25 [PN]: Dynamic programming continued: Longest common subsequence
- Sept 29 [PN]: Dynamic programming continued: 0/1 knapsack problem (Section 6.4 of DPV), Introduction to greedy algorithms: fractional knapsack (Section 3.1 of these notes)
- Oct 1 [GP]: Recurrence solving methods
- Oct 6 [PN]: Greedy algorithms continued: Activity selection
- Oct 13 [PN]: Graph algorithms: Breadth-first search
- Oct 16 [PN]: Depth-first search, types of edges, properties
- Oct 20 [PN]: Single source shortest paths: Dijkstra's algorithm
- Oct 23 [PN]: Applications of DFS: Topological sort, strongly connected components
- Oct 27 [PN]: Bellman-Ford algorithm, all-pairs-shortest-paths: Floyd-Warshall algorithm
- Oct 30 [PN]: Spanning trees: generic greedy method, Prim's and Kruskal's algorithms
- Nov 4 [PN]: Analysis of Kruskal's algorithm: union-find
- Nov 6 [PN]: Union-find with path compression O(log*n) amortized bound
- Nov 11 [PN]: Network flows: Ford-Fulkerson method, max-flow min-cut theorem
- Nov 13 [PN]: Network flows: Edmonds-Karp algorithm, application to bipartite matching
- Nov 25 [PN]: Fast Fourier transform
- Nov 27 [PN]: Introduction to P,NP, NP-completeness, reductions
- Dec 2 [PN]: NP-completeness continued: reduction from 3SAT to clique, brief sketch of Cook-Levin theorem
- Dec 4 [PN]: NP-completeness of subset-sum by a reduction from 3SAT, introduction to approximation algorithms: 2-approximation to vertex cover
- Dec 5 [PN]: Introduction to randomized algorithms and derandomization by conditional expectations: max-3SAT and max-cut

Oct 9 [PN]: Doubts clearing session for Quiz 1 preparation

Nov 20 [PN]: Doubts clearing session for Quiz 2 preparation

Dec 18 [PN]: Doubts clearing session for Quiz 3 preparation