An investigation of algorithmic paradigms: divide and conquer, dynamic programming, greedy algorithms, graph algorithms, randomized algorithms, undecidability, NP-completeness, and approximation algorithms.

Only one of the following may be counted: Computer Science 331, 331H, 357, 357H, 378 (Topic: Algorithms and Complexity).

Prerequisite: The following coursework with a grade of at least C-: Computer Science 429 (or 310) or 429H (or 310H); Mathematics 362K or Statistics and Data Sciences 321 (or Statistics and Scientific Computation 321); and credit with a grade of at least C- or registration for: Mathematics 340L, 341, or Statistics and Data Sciences 329C (or Statistics and Scientific Computation 329C).

May be counted toward the quantitative reasoning flag requirement.

Undergraduate Program
Core - Theory