Complexity of algorithms, time and space requirements and trade-offs. Searching and sorting, mathematical algorithms, graph and combinatorial algorithms. Divide and conquer, branch and bound, dynamic programming, exhaustive search. Limitations, intractability and NP-completeness, approximation algorithms.
Prerequisites: CSCI 1321 and 1323.