Algorithm design strategies, including greedy, divide-and-conquer, and dynamic programming methods. Advanced data structures, including balanced search trees, graphs, heaps, and priority queues. Advanced methods of searching and sorting. Computational complexity and analysis of algorithms. NP-complete problems.
Computer Science 221, and prerequisite or co-requisite Mathematics 220, or permission of instructor. (Fall)