This course studies the design, implementation and analysis of important algorithms. Topics include lower and upper complexity bounds, algorithm analysis techniques, NP-completeness, sorting algorithms, searching algorithms, graph algorithms, divide-and-conquer algorithms, greedy algorithms, dynamic programming, backtracking, probabilistic algorithms, and mathematical algorithms. Not open to students who have received credit for COSC 340. Formerly COSC 340. Prerequisites: COSC 201; and MATH 200 or MATH 281.