Theory of Computation

Wednesday, May 10: Final Friday, May 5: Review Wednesday, May 3: Quantum computing Monday, May 1: Quantum computing Wednesday, April 26: Reductions Monday, April 24: NP-completeness Friday, April 21: Nondeterministic polynomial time Wednesday, April 19: Polynomial time Monday, April 17: Model efficiency Friday, April 14: Time complexity Wednesday, April 12: Exam Monday, April 10: Exam Friday, April 7: Review Wednesday, April 5: Reductions Monday, April 3: Unrecognizeable languages Friday, March 31: Undecidable languages Wednesday, March 29: Decidable languages Monday, March 27: Turing machines Friday, March 17: Turing machines Wednesday, March 15: Turing machines Monday, March 13: Exam Friday, March 10: Review Wednesday, March 8: Closures Monday, March 6: Pumping lemma Friday, March 3: Equivalence Wednesday, March 1: Pushdown automata Monday, February 27: Context-free grammars Friday, February 24: Context-free grammars Wednesday, February 22: Context-free grammars Monday, February 20: Pumping lemma Wednesday, February 15: Demo Monday, February 13: Exam Friday, February 10: Review Wednesday, February 8: Regular expressions Monday, February 6: Closures Friday, February 3: Equivalence Wednesday, February 1: Nondeterminism Monday, January 30: Regular languages Friday, January 27: Finite automata Wednesday, January 25: Automata theory Monday, January 23: Proofs Friday, January 20: Notation Wednesday, January 18: Introduction
Course overview

Ours is primarily an applied discipline, but it has a theoretical foundation. Computers can be viewed as physical approximations of mathematical models. Examining these models reveals what we can expect computers to do - and what we can't. This course addresses questions like:

This is not a programming course; in fact, it may feel more like math or philosophy. However, this material forms the foundation of computer science, and it connects to concepts in other CS courses in many small ways.


Math 280. This course assumes that you have some familiarity with set theory and proof procedures.


Introduction to the Theory of Computation, 2nd or 3rd Edition by Michael Sipser.

Office hours

My regular office hours this semester are 12:00-2:00 Tues/Thurs. If you have other commitments during those times, we can make other arrangements as needed.


If your learning or participation in this course may be affected by a disability or any other factor, please talk to me early in the semester so that we can arrange appropriate accommodations. I will do my best to ensure that everyone can learn effectively.


Being in class will be crucial for your learning in this course. Absences will leave holes in your understanding of course concepts. If you must miss a class, you are expected to work to get caught up before the next class.


Your final grade will be a weighted average of exams (60%), homework (30%), and reading responses (10%). This table shows how averages translate to the 4-point scale. Please note that I set a high bar for a 4.0 and there is no such thing as extra credit.

Academic integrity

It is important to me that you conduct your work in this course with academic integrity. That means abiding by the specific policies outlined below, as well as the general guidelines in the Student Handbook. It is my responsibility to report violations of these policies to the Dean.


A handful of problems will be due almost every day of class, and we will begin each class by going over the problems that are due that day. You may want to bring an extra copy of your solutions so that you can take notes on them.


There will be four exams, each covering about a quarter of the course, with written problems based on the homework. Their expected dates are 2/15, 3/13, 4/12, and 5/10.


For each assigned reading, you will be asked to submit responses to some questions. The deadline for each response is the start of the first exam after it was assigned.


Things you might find useful:

We will be using Sakai just for grade tracking.