CS520: An Introduction to the Theory of Computation

Professor:       Jin-Yi Cai, 4393 CS, 262-3158, jyc@cs.wisc.edu.
Time and Place:  Tuesday and Thursday, 1:00 pm to 2:15, 1221 Computer Science Building.
Office Hours:    Tuesday and Thursday,  2:15-3:15 p.m.  (subject to change.) 
			or by appointment.
Text:            Introduction to the Theory of Computation 
                 by Michael Sipser, PWS Publishing Company, second edition.  
TA:              Siddharth Barman sid@cs.wisc.edu 
TA Office Hours:    Wed. 11:00 am -- 12:30 pm  Room 3361 CS.

Course Description

This course is an introduction to the theory of computation. We will study automata theory, formal languages, the theory of computability and undecidability, and computational complexity. This material is central to many branches of computer science; it underlies the basic theory of compiler design, the efficiency of algorithms, and the limitations of computing. Computational complexity theory is also what makes modern cryptography possible . This will be perhaps the first course in which the student is exposed to the rigorous treatment of the fundamental theory of computability and complexity. The course will focus on: 1) Various computational models such as Finite Automata, Pushdown Automata and the Turing machines. The hierarchy and interplay between the levels of computational devices are the core material of our course. 2) Formal language counter parts of these computational devices, such as regular languages, context-free languages and recursive languages. Mathematical techniques useful in the theory will be discussed.

Topics include:

Deterministic finite automata; Nondeterministic finite automata; Nondeterministic finite automata with $\epsilon$-moves; Regular expressions; Regular languages; Equivalence theorem; Myhill-Nerode Theorem; Finite automata minimization; Pumping Lemma for regular languages;

Context-free languages; Push-down automata; Equivalence theorem; Non-context-free languages;

Turing Machines; Countable and uncountable sets; Diagonalization; Decidability Theory; Undecidable sets; Halting Problem; Reducibility; Complete sets; Recursion Theorem;

P \& NP; Satisfiability; 3-SAT; More NP-completeness such as Hamiltonian Circuit, Colorability etc. If time permit, some other topics in complexity theory.

The core material of this course constitutes the most fundamental concepts of computer science; one can say the stuff of this course is what makes computer science a science. It is a ``thinking course'', by which I mean that the students are expected to think. Computer programming skills and experience might be helpful in guiding intuition, but primarily students are expected to exercise mathematical reasoning and logical deduction. Mathematical rigor in presentation is expected. Essays or philosophical musings alone are generally not acceptable as answers to precise questions. There will be weekly/biweekly homeworks, which count for approximately 35\% of the grades. Homeworks should be written legibly. (It is your responsibility that the TA can understand your answers, and not the other way around.) There will also be an in-class written midterm, which counts for roughly 25\%, and a written final exam on WED. MAY 10 set by the University, which counts for roughly 35\%. (Yes, it does not add up to 100 \%, yet; see below.) Homeworks as well as exams are expected to be your own work. Homeworks are due on the due date {\bf in class}. {\bf No late homeworks will be accepted,} except by explicit permission of the TA or the Professor, under exceptional circumstances. All students are expected to observe faithfully the code of academic integrity. Cheating of any sort is subject to dismissal from the class with an F grade without regard to course performance so far. All students are expected to attend {\it all classes}. (For exceptions which are not unforeseeable, such as for religious observances, students must notify the Professor within the first two weeks of class.) There may be regular and random taking of attendances. Signing the attendance sheet for others who are not present is an act of academic dishonesty. Class participation and/or extra credits on homeworks will be taken into account for the final grade.

You are encouraged to ask questions, in class or after class, and during Ta's or my office hours. (You should ask questions that pertain to the subject matter of the class, and not the ``How do I do this problem'' variety.) See your TA first regarding any grading questions, and only if such a problem is not resolved you should come to see me. For a more philosophical take on the materials of this course, I highly recommend the following book by Douglas R. Hofstadter: "Gödel, Escher, Bach: an Eternal Golden Braid"\\ http://www.forum2.org/tal/books/geb.html If you read this page before the semester starts, you may want to enjoy this wonderful reading over the holidays.

Recommended Background

CS 240 and some familiarity with computer programming and some basic algorithms. More than any specific algorithms, you should have some basic skills to think algorithmically, as well as reason logically, and present your thoughts mathematically.