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

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

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