[Page Status: Draft, Under construction]
Sections | Time | Location | Other info |
---|---|---|---|
Lecture | Tue and Thu, 5:00PM-6:20PM | Piazza sign-up: https://piazza.com/buffalo/spring2025/cse396 | |
Recitation 1 | Thu, 8:00AM-8:50AM | Capen 260 | |
Recitation 2 | Thu, 9:30AM-10:20AM | Baldy 112 | |
Recitation 3 | Fri, 10:00AM-10:50AM | Capen 260 | |
Recitation 4 | Fri, 9:00AM-9:50AM | Capen 260 |
(Other than office hours) All questions/requests to the instructor, TAs, and Graders should be sent using Piazza (New Post and select Instructors only if this is a private post), and not via emails (which can be used as a secondary means if Piazza post didn't work).
UB Learns should be used for checking the grades (and doing quizzes) – all other materials such as syllabus, announcements, homeworks, and Q&As, are handled by Piazza only.
Role | Name | Office Hours |
---|---|---|
Instructor | Xiangyu Guo (xiangyug@buffalo.edu) | Davis Hall 318, Tue & Thu, 1:30 PM – 2:30 PM. (Zoom Link) |
TA | Sean Grzenda (seangrze@buffalo.edu) | Bansal Atrium, 1st floor of Davis Hall, Tue 9 am - 11 am |
TA | Nicole Ewenike (esomchuk@buffalo.edu) | Baldy 109, Mon & Wed 3 pm - 4 pm |
Grader | Parag Shah | N/A |
Grader | Harshit Malpani | N/A |
Grader | Piyush Gulhane | N/A |
Grader | Sreeram Melpadi | N/A |
Grader | Aakash Vydana | N/A |
This will be a mostly mathematical course. The first main objective of the course is to convey those major concepts and results in the theory of computation that guide our thinking about the power of computers and the problems we can solve with them. This includes the entire historical origin of the field in the work of Alan M. Turing, Kurt Gödel, and Cook-Levin. Finite automata, regular expressions, boolean circuits, and idealized programs (if not the Turing machine, think of the Java Virtual Machine) are tools of everyday computing practice. Computational complexity theory asks the fundamental question of how much time, memory, and other computational resources computers need to solve certain problems, and today is relied upon for Internet security.
A second main objective is not as "concrete" as the above-listed syllabus material, but is just as important. Computers are by-nature entirely formal entities---they do precisely what is prescribed in programming languages that are ultimately formal and mathematical. Not just to reason about them, but even to communicate effectively in the field and on the job, one must be able to state assertions precisely and design prototypes concisely. This requires fluency in the underlying mathematical language used to describe problems, computations, and objectives. This course gives valuable training in formal modes of reasoning, analysis, and presentation.
A tentative list of topics are
What is computation:
What is and is not computable:
What is efficient computation.
The outreach of the theory of computation
Course Credits: 4
At the end of this course, each student should be able to apply mathematical foundations, algorithmic principles, and CS theory to model and design systems with comprehension of the tradeoffs involved in design choices.
Students need to have some basic knowledge of
The primary textbook we will use is
[Sipser] Michael Sipser. Introduction to the Theory of Computation. 2nd ed.
[Widgerson] Avi Widgerson. Mathematics and Computation. Princeton University Press. (2019). Available online.
[MM] Cristopher Moore and Stephan Mertens. The Nature of Computation. Oxford University Press (2011)
[Aaronson1]. Scott Aaronson. Quantum Computing Since Democritus. Cambridge University Press (2013)
[LPV] László Lovász, József Pelikán, and Katalin Vesztergombi. Discrete Mathematics: Elementary and Beyond. Springer (2003)
[LLM] Eric Lehman, F. Thomson Leighton, Albert R Meye. Mathematics for Computer Science. Also freely available online.
[Aaronson] Scott Aaronson's website