The two sections share the same gradescope and edstem pages (both linkable through courseworks).
Office hours:
The full schedule can be
found in the course
calendar:
Please check on the location for each of the office hours, e.g., zoom or a specific room. Also before going to office hours, check the calendar for any last minute changes.
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). Lateness policy:
Late homework will not be accepted. However for emergencies, such as a serious family or medial emergency, assuming you can provide all necessary documentation, we will make every effort to provde accomodations.
Teaching staff and Office Hours
If you have any questions about the course, please send your email to: cs3261admin@googlegroups.com. This email will be seen by the Professor as well as the head TAs.
Questions with
sensitive personal information can be emailed to just the Professor.
Class description and syllabus
Readings: Chapter 0, Chapter 1.1
Readings: Chapter 1.2
Readings: Chapter 1.2
Readings: Chapter 1.3
Readings: Chapter 1.3 and Handouts below on NFA to Regular Expression Conversion
Readings: Chapter 1.4
Readings: Chapter 2.2
Readings: Chapter 2.2, 2.1
Readings: Chapter 2.3
Readings: Chapter 2.4
Readings: Chapter 3.1
Readings: Chapter 3
Readings: Chapter 4
Readings: Chapters 4,5
Readings: Chapter 5
Readings: Chapter 5
Readings: Chapter 7.1,7.2
Readings: Chapter 7.3,7.4,7.5
Readings: 7.3-7.5 Homework
Note: The responsibility for what is written on a submitted
homework belongs solely to the student who submitted it.
The teaching staff will try their best to help students and
answer their questions.
A primary goal of this class is for you to be able to tell correct solutions from wrong ones. We aim (through lectures, office hours, and homeworks) to
to help you understand the material, to a
point where you understand what exactly the question is
asking, and how to tell for yourself whether you had succeeded
to solve it.
In particular, if a TA (or the professor) tell a
student something, even if they accidentally make a mistake in their
reasoning, the student is still responsible for catching that
(at least if they are going to write something based on it),
by fully understanding the problem and solution.
Homework 1 Solutions
Homework 2 Solutions
Homework 3 Solutions
We will accept regrade requests for assignments on Gradescope up to one week after grades are released. Please read the published solutions and the rubric before submitting a regrade request. To submit a regrade request on Gradescope, click on the question and click "Request Regrade", then write a few sentences explaining why you think your answer is correct. When we receive a regrade request, if we realize that we made a mistake in applying the rubric, we will correct the mistake. Note that this may result in the grade going down (or up, or no change).
There will be two exams, in class:
All students are assumed to be aware of the computer science department academic honesty policy .
For homework, collaboration in groups of two or three students is allowed (but not required). If you do collaborate, you must write your own solution (without looking at anybody else's solutions), and list the names of anyone with whom you have discussed the problems. 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 or written notes from any other student, even if you worked on solving the homework together. Collaboration without acknowledgment is considered cheating. Obviously, you are also not allowed to look at solutions from other classes, other institutions, previous years, and so on. If you are in doubt, ask the professor. Homework should constitute your own work.
Every student caught cheating will be referred to Columbia's office of Student Conduct and Community Standards, as well as subject to academic penalty in the class.
Readings and homeworks will be assigned from Introduction to the Theory of Computation by Michael Sipser. Either the Second or Third Edition is acceptable. 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