Please see Staff page.
Please see the Communication Policy.
This undergraduate course covers techniques for designing and analyzing algorithms and data structures
for a wide range of problems. Topics include:
Design techniques:Divide-and-conquer, dynamic programming, greedy algorithms, parallel algorithms, randomized algorithms |
Graph algorithms:Graph traversal, shortest path, minimum spanning tree, max flows and minimum cuts, matching |
Intractability:Easy and hard problems, decision problems, NP-Completeness, reducibility |
Large scale computing:Clustering, hashing, sketching, streaming, approximation algorithms |