COSC 545 - Theory of Computation (Spring 2013)

Georgetown University

Prof. Calvin Newport

Tuesday and Thursday, 3:30 - 4:45

Intercultural Center, Room 211B

Course Overview


This course covers foundational results in theoretical computer science. Approximately the first half of the course will focus on finite automata and computability theory, with the remainder focused on complexity theory.

Students will come way from this course familiar with the classic concepts from theoretical computer science (language types, what you can and cannot solve with computers, the complexity of problems, including NP-completeness, and so on). Students will also develop comfort formally proving things both possible and impossible.


The required textbook for this course is Introduction to the Theory of Computation, 3rd Edition, Michael Sipser, 2012. Most of the topics covered in this course, and many of the problem set problems, will be drawn from this text.


Grades in the course will be based on biweekly problem sets, two exams, and participation. The participation grade will be based on your attendance and involvement in class. If you show up to class, pay attention, and ask questions when stuck (either in class, or after class), you will get full participation points.

In determining your final grade, I will calculate the percentage of available points you received for your problem sets, exams, and participation, and then combine these percentages with the following weights:

Problem sets50%

Every student will therefore end up with a single weighted point percentage. Toward the end of the course, I will decide the mapping from ranges of these values to letter grades. Feel free to check in with me earlier in the semester, however, for an estimate of where you stand.

How to Get an A in this Course (without Burning Out)

A few tips for doing well in this course without excessive amounts of stress:

Course Logistics

Office Hours

I hold regular office hours from 11:30 am to 1:00 pm on Thursdays, in my office at 342 A Saint Mary's Hall. If this time conflicts with your class schedule, let me know, and we can arrange alternate meetings as needed.


To ask me small logistical questions, I prefer that you grab my attention immediately before or after class. For substantive content questions, I prefer that you bring them to office hours. Use e-mail only when the above two options are not applicable.

Problem Sets

The following rules will help keep the problem set submission and grading process running smoothly:


There will be two exams in the course: a midterm and a final. The midterm covers automata and computability theory and the final covers complexity theory (i.e., it is not cumulative).

Academic Integrity

I take academic integrity seriously. To repeat the problem set instructions from above: You must work alone on problem sets. You may only discuss problems with me. The only materials you can reference when working on these problems are your course notes and the assigned textbook. In particular, you may not reference online sources or talk to other students.

You may not bring any outside material into exams.

You may not reference any problem sets, exams, or solutions from prior teachings of this course.

When in doubt, ask me what is allowed.


Below is the tentative schedule for the course. I will modify the schedule as needed as the course progresses. Problem sets will be posted below on this schedule as they become available. The readings column lists the chapters from the Sipser textbook that cover the corresponding lecture's material.

Class NumberDateDescription Readings
Part 1: Automata Theory
11/10Intro; finite automata1.1
21/15Non-determinism; regular languages; 1.2, 1.3
31/17Pumping lemma for regular languages; context-free grammars; Chomsky normal form1.4, 2.1
41/22Pushdown automata; pumping lemma for context-free languages2.2, 2.3
Part 2: Computability Theory
51/24Turing machines3.1
61/29Decidable languages; file look-up machine; 4.1
71/31Undecidable and Unrecognizable languages4.2
82/5Reducibility5.1, 5.3, 6.3
92/7Linear-bounded automata; PCP5.1, 5.2
102/12Advanced topics in computability theory: recursion theorem;
  • pset 2 due
112/14Lecture overflow; midterm review 
  • pset 3 available (Note: due to spring break, you have less time than normal to complete this problem set; accordingly, it is shorter than normal problem sets.)
132/21Advanced topics in computability theory: decidability of logical theories, Godel's incompleteness theorem, and the computational complexity of information 6.2, 6.4
Part 3: Complexity Theory
142/26Time complexity; TIME and NTIME complexity classes7.1
152/28The classes P and NP
  • pset 3 due
7.2, 7.3
 3/5No Class: Spring Break 
 3/7No Class: Spring Break 
163/12NP-completeness; the Cook-Levin theorem; 7.4
173/14More NP-complete problems7.4, 7.5
183/19Space Complexity; SPACE and NSPACE complexity classes8.0
193/21Savitch's Theorem; PSPACE and PSPACE-Completeness8.1, 8.2, 8.3
203/26Games and Generalized Geography;
  • pset 4 due
  • pset 5 available [Download]
 3/28No Class: Easter Break 
214/2L and NL, NL-Completeness, and NL = coNL8.4, 8.5, 8.6
224/4Hierarchy Theorems9.0, 9.1
234/9Intractable Problems;
  • pset 5 due
  • pset 6 available [Download]
9.0, 9.2
244/11Approximation Algorithms10.1
254/16Probabilistic Computation, BPP10.2
264/18Lecture overflow/advanced topic  
274/23Advanced topic
  • pset 6 due
284/25Review for final examination 
  Final examination (date and location pending) 

Qualifying Exam

The PhD qualifying exam includes a segment on theory of computation. It is based on the material covered in COSC 545 (which is summarized in the schedule below along with the corresponding chapters of the Sipser textbook). To help your review, here is a summary of what you are expected to know from this material for the qualifying exam: