CS154Introduction to Automata and Complexity TheoryWinter 2002

Additional office hours for Serafim: Wednesday 4:306:00; Thursday 4:005:00.
Review session: Sunday at 5:00, Braun auditorium.
Serafim Batzoglou, Gates 154, serafim@cs.stanford
Office hours: Monday & Wednesday 4:305:30.
Yoo Chul Chung, Gates 262, chungyc@cs.stanford.edu
Office hours: Tuesday 3:005:00, Thursday 4:006:00 in Gates B26A, x36319.
Nickolay Stanev, nstanev@cs.stanford.edu
Office hours: Monday 11:001:00, and Tuesday 1:003:00. Taking place in the Tressider Union Coffee House (enjoy)!
This course aims to answer two very basic questions in Computer Science.
Question 1: What is computable? In other words, what can a computer do, if memory and time are not an issue? Not every question in the universe can be solved by a computer. For instance as we will see, a computer cannot decide some very basic questions such as: (i) whether a given mathematical statement is true; (2) whether a program written in C (for instance) will terminate or loop forever. This is the topic of the first part of this course (including some of CS154N).
Question 2: What is computable efficiently? In other words, what can a computer do within a reasonable amount of time and memory? As an example of a simple problem that currently computers can't do fast enough, take factorization. There is no known algorithm that can factor 1,000digit numbers on today's computers, if we limit the time allowed to less than say 1,000,000 years. On the other hand, computers can multiply two such numbers in a split of a second. Why? This is the topic of the last part of this course.
So this course covers basic theoretical concepts in Computer Science, such as finite automata, Turing machines, and complexity classes. It also aims to provide students with basic formal proof skills. At the end of the course you should know what kinds of problems are computable, which problems are "easy" and which are "hard", and how to prove all that.
MW 3:154:30, in 380380C
Required: Hopcroft/Motwani/Ullman's "Introduction to Automata Theory, Languages, and Computation".
Optional: Mike Sipesr's "Introduction to the Theory of Computation".
Midterm: Friday February 8, 2:45 to 5:15, open book & notes
Final: Friday March 22, 12:15 to 3:15, open book & notes
Assignments will be handed in on Wednesday, and due the following Wednesday at the beginning of class. Each problem must be turned in on a separate sheet. Collaboration is allowed as long as (1) you acknowledge all the people you discussed the problem with, and (2) each student writes up his/her own solution without looking at any writeup/notes from another student. Grading work is distributed among the students. Each student is required to grade at least once.
The worst homework grade will be dropped when calculating your homework average. Also you will be allowed to turn in up to two homeworks late, but no later than the Friday discussion session. Apart from that, no late homework will be accepted. If you plan to be away at a day when one of the homeworks is due, please give it to a friend to turn in, or arrange to mail, fax, or email it to Yoo Chul or Nickolay, and have it arrive before class starts. In case you plan to skip a homework because you can't turn it in on time, you are still encouraged to turn it in late and have it corrected. Finally, points from extra credit problems turned in on time will count regardless of whether the homework is dropped from your grade.
Homework: 40%
Midterm: 25%
Final: 33%
Grading and Participation: 2%
Extra credit: There will be plenty of extra credit available for solving difficult extra homework and exam problems, and for doing a good job in grading or volunteering to grade more than once. Extra credit is extra: the course will be graded as if there is no extra credit, and then extra credit will be added to push your grades higher. (If you receive a total >= 100%, you will be commended for your performance!)