Standard Complexity Theory and Beyond

The theory of computation studies the abstract properties of computation which arise in concrete applications, for instance, in the design and analysis of algorithms. The logical properties of computability are well understood, thanks to the efforts of mathematical logicians (Turing, Goedel, Church, etc) going back to the 1920's. But in computer science, we are deeply interested in finer points of computation related to computational complexity. These issues are much harder to resolve and include such famous questions as the ``P versus NP'' problem. ``Standard'' complexity theory has been developed to investigate such phenomenon and is a currently thriving field. In this course, we want to explore two frontier areas of complexity theory:
We will divide the course into roughly three equal parts: