CS660 Fall 2006 Syllabus

Time: 2:00-3:15 Tuesday and Thursday
Place: MEC 339
Instructor:
Humper
Greg Humphreys, humper@cs.virginia.edu
Office Hours: Monday 10-12 (Olsson 216)
TA:
Nguyet
Nguyet Nguyen, ntn3a@cs.virginia.edu
Office Hours: Friday 2-4 (Olsson 237)
Goals: This course will have two main aspsects. The first will be closely related to the design or analysis of any complex software or hardware system. Finite automata come up in almost every complex system, from pattern matching to circuit design to text editing. Compilers rely heavily on FSMs and CFLs.

We will also approach computation from a philosophical standpoint. We will discuss what can or cannot be computed, and what it means for a computation to be "efficient". These insights have a significant impact on how we think about using computers to solve problems.

The overarching goal of this course is to introduce some mathematical rigor into computer science. The material in this course is very formal and precise, and the skills you learn solving problems in complexity theory will be invaluable when designing and analyzing software and hardware.

We will cover the following topics:

  • Proof methodologies
  • Set theory review
  • Finite automata: Deterministic and non-deterministic FSM's, regular languages. Ways to prove that languages are (not) regular. Properties of regular languages.
  • Pushdown automata: context free languages and grammars. Parse trees and ambiguity. Properties of CFL's and techniques for proving that languages are (not) context free.
  • Turing machines: definition and relation to real-world programs. The Church-Turing thesis.
  • Decidability: Recursive / Recursively Enumerable languages. The universal Turing machine. Problems that cannot be computed (e.g., the halting problem).
  • Complexity Classes: Decidable problems without known efficient algorithms. Polynomial time computation. NP-completeness and reduction techniques.
  • Incompleteness: Gödel's famous theorem about proofs and consistency.
  • Advanced Topics (Time Permitting): Space complexity, randomized algorithms, approximation algorithms. Savitch's theorem.
Assignments: There will be seven written assignments that will be closely related to the material covered in class. Assignments are due at the beginning of class. We will not accept late assignments except in extraordinary circumstances (e.g. family emergency, student is hospitalized). Power outages, conference travel, a cold, friends visiting or troubles with your significant other are not extraordinary events.
Exams: There will be an in-class midterm and a take-home final.
Background: This course is mostly self contained. Familiarity with algorithm analysis at an undergraduate level will be helpful. Some simple mathematical background is assumed (logarithms, summations, etc). Mostly, you need to be able to think.
Texts: Introduction to the Theory of Computation by Michael Sipser (Required)
Gödel, Escher, Bach by Douglas Hofstadter (Recommended)
Grading: The weekly assignments will collectively be worth 50% of your grade. The midterm will be worth 15%, and the final will be worth 35%.
Honor Code: The honor code applies to all work turned in for this course. You may not use outside materials to assist you in solving homework problems. This includes other textbooks, or materials available on the internet. You are not allowed to receive specific homework-related aid from other people. However, you may talk to others (the TA, your professor, or other students) regarding general high-level problem solving strategies. This kind of problem solving collaboration is encouraged, but you must write up your own homework solutions. If you find your study group writing down solutions to the specific homework problems, you have crossed the line.

Lecture Schedule

Date Topics Readings
8/24 Set Theory and Logic Review  
8/29 Proof Techniques Sipser 0.1-0.4
8/31 Finite State Machines Sipser 1.1
9/5 Nondeterministic Finite State Machines Sipser 1.2
9/7 Problem Session (Homework 1 Due)  
9/12 Epsilon NFAs and Regular Expressions  
9/14 The Pumping Lemma for Regular Languages Sipser 1.3-1.4
9/19 Closure Properties of Regular Languages  
9/21 Problem Session (Homework 2 Due)  
9/26 Context Free Lanaguages Sipser 2.1
9/28 Pushdown Automata Sipser 2.2
10/3 Chomsky Normal Form
The Pumping Lemma for Pushown Automata
Sipser 2.3
10/5 Closure Properties of Context Free Languages  
10/10 Problem Session (Homework 3 Due)  
10/12 Midterm Exam (in class)  
10/17 NO CLASS  
10/19 NO CLASS  
10/24 Turing Machines and Decidability Sipser 3.1,3.3
10/26 Nondeterministic Turing Machines Sipser 3.2
10/31 Universal Turing Machines Sipser 4.1-4.2
11/2 Problem Session (Homework 4 due)  
11/7 Undecidability Sipser 5.1-5.3
11/9 Complexity Classes Sipser 7.1-7.5
11/14 P vs NP  
11/16 Problem Session (Homework 5 due)  
11/21 THANKSGIVING  
11/23 THANKSGIVING  
11/28 Space Complexity Sipser 8.1-8.6
11/30 Incompleteness GEB
12/5 Problem Session and Review (Homework 6 due)