Courses

CS 172. Computers and Complexity

Current Schedule (Spring 2015)

Description

Catalog Description: (4 units) Finite automata, Turing machines and RAMs. Undecidable, exponential, and polynomial-time problems. Polynomial-time equivalence of all reasonable models of computation. Nondeterministic Turing machines. Theory of NP-completeness: Cook's theorem, NP-completeness of basic problems. Selected topics in language theory, complexity and randomness.

Prerequisites: CS 170.

Course objectives: Provide a sound understanding of the fundamental limits of computation, as evidenced by the existence of non-computable functions, NP-hard problems etc. Formalize key abstract concepts such as machine models, language classes, universal machines, reducibility, computability, and resource-bounded computation. Understand how these concepts relate to practical issues such as compiler design, program checking, computational intractability, approximability and cryptography.

Topics covered:

CS 172 presents some of the most fundamental results in theoretical Computer Science. These results attempt to answer, in a precise mathematical sense, the following two questions, which are of obvious practical as well as philosophical interest:

Thus, unlike CS 170, this course focuses on problems rather than on specific algorithms for solving problems. A precise formulation of the two questions above requires a formalization of the notion of "computer" or "machine". Thus the course outline breaks naturally into three parts:

General Catalog

Undergraduate Student Learning Goals