COMS W3261: Computer Science Theory, Spring 2012

General information

This is a three-credit required course for the undergraduate CS program. The course prerequisites are Discrete Math (COMS 3203) and, to a lesser degree, Data Structures (COMS 3137), or the instructor's permission.

The course is from 2:40 to 3:55 on Tuesday and Thursday, in 312 Math.

Announcements

Instructor and office hours

All TA office hours are in the Computer Science TA room in Mudd. All of Professor Malkin's office hours are in 514 CSB. If you do not have swipe access to the computer science building, please ask someone in the office to let you in.

Week of 4/30 - 5/4

Class description and syllabus

This course is an introduction to models of computation, computability, and complexity. We will ask questions like: How do we define the abstract notion of "computation" or a "computer"? What problems can be computed? What problems can be computed efficiently? Can we prove that some problems can never be computed, no matter how fast our computers become? The course is highly mathematical and abstract; in particular, there will be minimal programming assignments (if any) and homework problems will frequently involve proving or disproving various assertions. Students are expected to be comfortable with the material covered in Discrete Math (W3203) or the equivalent.

Topics (not exhaustive): automata and the languages they define, context-free grammars and the languages they define, Turing machines, basic complexity theory (such as P vs. NP).

Lectures

Recitations

Handouts with problems covered in recitation are posted on courseworks.

Homework

Each homework is due at the beginning of each class. Homework not submitted at the beginning of class will be considered late. Homeworks must be legibly written or typed. LaTeX is preferred - Jacob has written an excellent list of LaTeX resources on the Courseworks discussion board.

Grading policy

The homework constitutes 15%, Midterm constitutes 40%, and the final constitutes 45% of the final grade. Doing the homework is crucial for understanding and getting comfortable with the material; it is unlikely you will be able to do well on the tests without doing the homework. You are advised to start the homework early.

Lateness policy

Typically, homework will be due a week from the assigned date. Late homework may be submitted up until the beginning of the next class after the homework is due for a penalty of 30% off the grade. In some cases the above lateness policy may be canceled, and no late homework will be accepted. You will be notified of this when the homework is given out.

Collaboration policy

All students are assumed to be aware of the computer science department academic honesty policy . Homework should constitute your own work. Collaboration in groups of two or three students is allowed, but not required. Collaboration in groups of more than three students is not allowed. You should write your own solution, and list the names of all people that you collaborated with. If you use a source other than the textbook in doing your assignment, explain the material from the source in your own words and acknowledge the source. In any case, you are not allowed to look at written solutions of any other student, even if you worked on solving the homework together. Collaboration without acknowledgment is considered cheating.

Textbook

Readings and homeworks will be assigned from Introduction to the Theory of Computation, Second Edition by Michael Sipser, PWS Publishing Company. Copies are currently available at the Columbia bookstore, and there are five copies on reserve at the Engineering Library. The book's website and errata are available here. We will generally follow the book in class, but some departures are possible. Students are responsible for all material taught in class.

Optional text: Introduction to Automata Theory, Languages and Computation by John E. Hopcroft, Rajeev Motwani and Jeffrey D. Ullman

CS 3261 constitutes the last CS Theory course required to be taken by all CS majors. Students interested in the material covered by this course are strongly encouraged to pursue some of the advanced courses offered in in theoretical computer science. See the theory group's webpage for more information and a list of past and current theory courses. In particular, the following courses are very closely related in spirit to the topics covered in CS 3261:

In addition, the following courses (and quite a few others!) benefit from and relate to some of the topics covered by our course:

Useful links