(4) Prerequisite: CS 312. Design of complex algorithms. Algorithms for solving frequently occurring problems in computer applications. Computationally intractable problems, heuristics and partial solutions. Optimization techniques. Analysis of algorithms for specific problems of interest.