This course will cover the basic aspects of the theory of algorithms, including divide-and-conquer, dynamic programming and greedy, several graph algorithms, randomized algorithms, and approximation algorithms, together with an introduction to undecidability, and to NP-completeness.
Prerequisite: Upper-division standing; additional prerequisites vary with the topic.
Program:
Undergraduate Program
Division:
Electives