Back to my teaching page
Canvas page for the course is
here
Syllabus:
Module 1: Divide-and-conquer algorithms, probability, hashing
Module 2: Probabilistic data structures, red-black trees, B-trees
Module 3: Heaps, amortized analysis, greedy algorithms
Module 4: Dynamic programming, graph algorithms, NP-hardness
References:
1. Introduction to algorithms: Cormen, Leiserson, Rivest and Stein (Main textbook)
2.
Online lecture notes by Jeff Erickson
3. The Algorithm Design Manual: Steven Skiena
4. Algorithm Design: Kleinberg and Tardos
5. Data structures and algorithm analysis in C++(Java): Mark Weiss