COURSE OVERVIEW:
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:

The first one is very old  almost as old as
beginning of the theory of computation.
How can we give a proper foundation
for real computation?
This is sometimes viewed as the foundation for numerical analysis.
While the standard theory addresses computation over
a countable set (like finite strings or natural numbers),
we now ask about computation over an uncountable set.
After over 50 years of work, there is still debate
about the proper foundation for this theory.
Two dominant schools here are the analytic school
and the algebraci school.

The other frontier is very young:
looming in the horizon, we have the possibility of
computers built upon quantum principles.
What is the proper computational model here?
Does quantum complexity have radically different properties
than the standard theory?
We will divide the course into roughly three equal parts:

(1) Introduction to Standard Complexity Theory

(2) Real Computation

(3) Quantum Computation