CS 580 Course Syllabus
Overview
This course lays the groundwork for the analytical study of modern computing.
It covers the classic fundamentals of theoretical computer science. Topics
from formal language and complexity theory are chosen to highlight the boundary
between what can and cannot be effectively computed. Subjects in
algorithmic and mathematical analysis are selected to showcase general techniques.
Prerequisite
Students must be able to reason logically and devise formal mathematical proofs. Commendable completion of a course such as Computer Science 311 or its equivalent should generally suffice. Students in doubt should talk to the instructor before enrolling.
Milestones
Countability and other preliminaries
Regular sets and finite automata
Context-free languages and pushdown automata
Turing machines and recursive enumerability
Rice's Theorem and decidability
Reducibility and complexity theory
Cook's Theorem and NP-completeness
Decision, search, optimization and self-reduction
Selected additional topics as time permits
Grading
20% Homework
40% Exam I, to be held on October 1, 2025
40% Exam II, to be held on November 19, 2025