The fundamental goal of complexity theory is to classify problems according to the amount of resources needed to solve them. Complexity classes are classes of problems that in some respect demand the “same” amount of resources. The most basic resources studied are time and space. A complete problem for a complexity class is a problem that can be viewed as the hardest problem in the class.
Among the topics treated in the course are: Complexity classes: L, NL, P, NP, PSPACE, etc, Reductions and completeness, Cooks' theorem. Approximability, Randomized algorithms and Interactive proofs (IP).