Syllabus
Algorithm Analysis: Methodologies for analyzing algorithms, asymptotic growth rates, and amortized analysis. Fundamental Data Structures: Array-based structures and linked lists. Advanced Data Structures: Dictionaries, hash tables, Bloom filters, binary search trees, interval trees, range trees, and skip lists.
Algorithm Design Techniques: Foundations and applications of Divide-and-Conquer, Greedy techniques, Dynamic Programming, Backtracking, and Branch and Bound. Graph Algorithms: Topological sorting, strongly connected components, bi-connected components, bridges, articulation points, single-source shortest paths, and all-pairs shortest paths.
Flow Networks: Ford–Fulkerson algorithm, Edmonds–Karp algorithm, and applications of maximum flow, including efficient algorithms for maximum bipartite matching. Computational Complexity: NP-completeness, important NP-complete problems, polynomial-time reductions, and approximation algorithms. Parallel Algorithms (Overview): Tree contraction, parallel Divide-and-Conquer, and maximal independent set algorithms.