Prerequisite: CS610 and CS631, or equivalent. A study of the design and analysis of efficient computer algorithms and data structures. Topics include recurrences, sorting, order statistics, dynamic programming, graph algorithms, and NP-completeness. May include additional topics from the current literature.