CS Theory

COMS 3261, Fall 2026

Welcome to CS Theory !

This course is an introduction to the theory of computation, centered around the fundamental question:

What are the capabilities and limits of computation?

For example, which problems can (or cannot) be solved using a computer? Which problems are easy to solve? Is it possible that as technology improves and new brilliant approaches are invented, computers will be able to solve all problems? It turns out, perhaps surprisingly, that the answer to the last question is no. Even before the first computers were built, logicians in the 20th century studied the nature of algorithms and their intrinsic limits; they proved that some problems simply cannot be solved by any algorithm, regardless of what technology or computer we use.

Throughtout the course we will address these questions, starting with how we can even pose them (let alone answer them) rigorously. We will study different models of computation such as automata and Turing Machines. We will examine what makes some problems computationally easy, hard, or impossible to solve on these models, and what this means for our current and future computation capabilities.

The course is highly mathematical and abstract in nature. There will be formal proofs and no programming assignments. Students are expected to be comfortable with discrete mathematics.

Considering how different CS Theory is from other computer science classes you might have taken, you might wonder "Why is this course even mandatory?". It turns out that the topics explored in this course are of fundamental importance across all areas of computer science, from algorithms and machine learning to security and privacy. They also have a deep impact on areas beyond computer science, such as math and philosophy. Finally, the course helps you develop the essential skills of rigorous abstract reasoning and computational thinking.

Now that the course add period is over, we will send announcements through EdStem (which sends email to all students) rather than here. We will also upload the lecture notes from class on Courseworks. The brief lecture summaries and the handouts will still be maintained on this webpage.

Syllabus

Lecture Summaries

Below are brief summaries written shortly after each lecture, of what was covered, and readings. Readings refer to the textbook (Sipser), though sometimes may include other pointers or handouts. You are responsible for what was covered in class, which typically (but not always) follows the textbook. You should make sure to go over each lecture's material before the following lecture (the corresponding textbook chapters are posted). You may, but don't have to (unless otherwise specified) read ahead for next lecture. See the courseworks page for the class for the notes written during the lecture (possibly lightly edited right after).

Resources

Handout and review material:

Below are handouts generated by the teaching staff as a supplement to class material. These do not constitute required material for the class, but rather meant to support your learning and understanding. Most of the resources below provide further examples and review of what was already covered in class, but some of the resources provide new (and completely optional) more advanced material for interested students -- these will be clearly marked.

Some of Columbia's resources to support you: