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 2250 or MA 3200).
*All course information is from the 2016-2017 Catalog.