CSE 396 Introduction to the Theory of Computation (Spring 2025)

[Return to course list]

[Page Status: Draft, Under construction]

Site Map

Announcements

Logistics

Sections Time Location Other info
Lecture Tue and Thu, 5:00PM-6:20PM NSC 201 Cooke 121 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

Communication Policy

(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.

Teaching Team

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

Course Description

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

Course Credits: 4

Learning Outcome

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.

Pre-requisites

Students need to have some basic knowledge of

Recommend resources

Textbooks

The primary textbook we will use is