CS315 - Theory of Computation
Course Description:
This is an undergraduate-level course on the Theory of Computation. We will cover the basic ideas of computation, state machines like DFA and NFA, Streaming Algorithms, Turing Machines and Complexity Theory.
Prerequisites:
- An undergraduate course in Discrete Mathematics, Data Structures, Algorithms and Probability
- Strong problem solving skills and some background in programming.
Textbook(s)/Supplementary Readings:
- Introduction to the Theory of Computation 3rd Edition
Lectures:
Topic | Slides | Notes | Problem Sets |
---|---|---|---|
Background Review
|
Slides Slides |
Notes |
|
Introduction to Computation
|
Slides |
||
Computation, Encoding, and Languages
|
Slides Slides Slides Slides Slides Slides |
||
Finite Automata
|
Slides Slides Slides Slides Slides Slides Slides Slides Slides Slides |
||
Push Down Automata
|
Slides |
||
Streaming Algorithms
|
Slides Slides Slides Slides Slides Slides Slides Slides |
Notes | |
Turing Machines
|
Slides Slides Slides Slides Slides Slides Slides |
||
Decidability and Recognizability
|
Slides Slides Slides Slides Slides Slides Slides Slides Slides Slides |
||
Asymptotic Analysis
|
Slides Slides Slides Slides |
Notes | PS |
Intractable Problems
|
Slides Slides Slides Slides Slides Slides Slides |
Notes | PS |
Complexity Theory
|
Slides |
||
Polynomial Time Reduction
|
Slides Slides Slides Slides Slides Slides |
Notes | PS |
NP-Hard and NP-Complete Problems
|
Slides Slides Slides |
Notes | PS |
Randomized Algorithms
|
Slides Slides Slides Slides Slides Slides Slides Slides Slides |
Notes | PS |
Approximation Algorithms
|
Slides Slides Slides Slides Slides Slides Slides |
Notes | PS |