Design and Analysis of Algorithms
This is an introductory course on algorithms for B.Sc. second year students.
Students from M.Sc. first year are also welcome to take the course. The course
will be offered online due to the COVID-19 pandemic.
- Algorithm Design by Kleinberg and Tardos
- Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
- Algorithms by Dasgupta, Papadimitriou, Vazirani online copy
Instructors: G. Philip, Prajakta Nimbhorkar
Teaching assistants: Archit Chauhan, Adwitee Roy, Ashwani Anand, Satyaprakash Nayak, A. R. Sricharan
Practice problems
Topics covered so far:
- 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 9 [PN]: Doubts clearing session for Quiz 1 preparation
- 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 20 [PN]: Doubts clearing session for Quiz 2 preparation
- 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
Dec 18 [PN]: Doubts clearing session for Quiz 3 preparation