Description: This course covers major algorithm design techniques; theoretical analysis of nonrecursive and recursive algorithms; applications to sorting, searching, string matching, graphs; P and NP complexity classes; and approximation algorithms.

Specific Outcomes:
Establish an understanding of fundamental techniques for algorithm design.
Establish an understanding of efficiency classifications.
Develop and ability to mathematically analyze recursive and nonrecursive algorithms.
Apply algorithmic techniques to important problems from various areas of computing.

Instructor: Mirela Damian, Professor of Computer Science