The goal of this course is to understand the fundamental limits on what can be efficiently computed in our universe and other possible (or imaginary) universes. These limits reveal deep and mysterious properties about information, communication, and computing, as well as practical issues about how to solve problems.
Your experience will provide an understanding of:
problemscan and cannot be computed according to those definitions (computability)
problemscan and cannot be computed efficiently according to those definitions (complexity)
At the conclusion of this course, a successful student will be able to:
You should take this course if and only if
This course will assume knowledge of several topics from discrete math (CS2102 at UVA), and object-oriented Java programming (taught in CS2110 at UVA).
In particular, we assume knowledge of (with recommended resources for review):
prose proofs(CS2102 Proof style guide)
For each of the CS2102 topics, you can view last semester’s lectures for more information