Formal study of algorithms, including those for searching, sorting, and graph structure based ones. Addresses several algorithm design issues such as divide-and-conquer, greedy and dynamic programming. Defines, evaluates and analyzes the correctness, time, and space complexity of algorithms. Covers probabilistic, concurrent programming, and other topics such as P, NP, NP-Completeness and approximation algorithms. Springs. Prerequisite(s): CS 2381 and MA 3200.
*All course information is from the 2015-2016 Catalog.