CSC4010: Introduction to Theoretical Computer Science

Fall 2026 · CUHK-Shenzhen

This page is being prepared for the Fall 2026 offering. Items marked TBA will be updated before the relevant course activity.

Course Information

Lectures Time and room TBA
Course format 3 units; undergraduate lecture course offered by the School of Data Science.
Tutorial One tutorial each week, led by the instructor. Time and room TBA
Instructor Aditi Dudeja
Office hours TBA (office: Room 504b, Daoyuan Building)
Teaching staff TBA
Expected background Comfort with mathematical proofs, discrete mathematics, asymptotic notation, and basic algorithm analysis. No prior course in computability or complexity theory is assumed.
Textbook There is no required textbook. Lecture slides, notes, and required readings will be posted on this page or on the university learning platform.
Course outline Official course description. The detailed course outline on the university system is authoritative for assessment and policy information.
Communication Announcements will be posted on the university learning platform. For course-related email, please begin the subject line with [CSC4010].

Topics

This course studies two fundamental questions: What can be computed? and, among computable problems, what can be computed efficiently? We will formalize computation using mathematical models and use reductions, diagonalization, and hierarchy arguments to prove both possibility and impossibility results.

The following list is tentative and may be adjusted as the term progresses.

Languages and models Decision problems, languages, encodings, RAMs, Turing machines, and Boolean circuits.
Computability Decidable and recognizable languages, variants of Turing machines, self-reference and the Recursion Theorem, undecidability, and reductions.
Time complexity Polynomial time, the class P, time hierarchy, the class NP, certificates and verifiers, polynomial-time reductions, NP-hardness, NP-completeness, and the Cook–Levin Theorem.
Space complexity PSPACE, hierarchy theorems for time and space, Savitch’s Theorem, logarithmic space, sublogarithmic space, and small-space models of computation.
Restricted computation Constant-space computation and finite automata, together with a comparison to context-free grammars and pushdown automata.
Modern viewpoints Fine-grained complexity and introductory cryptographic applications of computational hardness and lower bounds.

The university course listing describes CSC4010 as an introduction to the theory of computation: the study of which problems computational devices can solve and how efficiently they can solve them, using precise abstract models.

Learning Outcomes

By the end of the course, students should be able to:

  1. Model computational problems as languages and reason precisely about algorithms and machines.
  2. Design and analyze Turing machines and explain why standard variants have equivalent computational power.
  3. Prove undecidability and complexity results using reductions, diagonalization, self-reference, and hierarchy theorems.
  4. Work fluently with central classes including P, NP, PSPACE, and logarithmic space, and explain the relationships proved in the course.
  5. Recognize how classical lower-bound ideas lead to modern conditional lower bounds and cryptographic applications.
  6. Write clear, rigorous proofs in theoretical computer science.

Grading

The course will use proof-based homework assignments, a midterm examination, and a final examination. The exact weights and the detailed collaboration policy will appear in the official course outline.

Homework assignmentsTBA
Midterm examinationTBA
Final examinationTBA

Unless an assignment explicitly says otherwise, submitted solutions must be written in each student’s own words and must clearly justify every nontrivial claim. The official course outline governs collaboration, late work, regrading, and academic-integrity rules.

Course Calendar

The calendar is tentative. Dates, lecture materials, assignment releases, and assessment information will be added as the term progresses.

# Date Topic Materials Assessments
1TBACourse introduction: languages, problems, algorithms, encodings, and computational modelsto be posted
2TBATuring machinesto be posted
3TBADecidable languages and variants of Turing machinesto be posted
4TBASelf-reference and the Recursion Theoremto be posted
5TBAUndecidability and the Halting Problemto be posted
6TBAReductions: how to prove problems undecidableto be posted
7TBATime complexity and the class Pto be posted
8TBATime Hierarchy Theoremto be posted
9TBAThe class NP: certificates and verifiersto be posted
10TBAPolynomial-time reductions, NP-hardness, and NP-completenessto be posted
11TBACook–Levin Theorem: SAT is NP-completeto be posted
12TBASpace complexity and PSPACEto be posted
13TBAHierarchy theorems for time and spaceto be posted
14TBASavitch’s Theoremto be posted
15TBALogarithmic spaceto be posted
16TBASublogarithmic spaceto be posted
17TBAConstant-space computation: finite automata; comparison with context-free grammars and pushdown automatato be posted
18TBAFine-grained complexity Ito be posted
19TBAFine-grained complexity IIto be posted
20TBACryptographic applications of lower bounds Ito be posted
21TBACryptographic applications of lower bounds IIto be posted
*TBAAdditional topics, review, and assessment meetingsto be announcedto be announced

Resources

There is no required textbook. The following books, notes, and surveys are optional references that approach the material from complementary viewpoints.

Further Reading

S12 Michael Sipser, Introduction to the Theory of Computation, 3rd edition.
B Boaz Barak, Introduction to Theoretical Computer Science (freely available online).
AB09 Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach.
VW18 Virginia Vassilevska Williams, On Some Fine-Grained Questions in Algorithms and Complexity.
G01/04 Oded Goldreich, Foundations of Cryptography, Volumes I and II.

Bibliography

This short list collects some foundational references connected to the lectures. It will be expanded during the term.

T36 Alan Turing, On Computable Numbers, with an Application to the Entscheidungsproblem, 1936.
C71 Stephen Cook, The Complexity of Theorem-Proving Procedures, STOC 1971.
S70 Walter Savitch, Relationships Between Nondeterministic and Deterministic Tape Complexities, JCSS 1970.
IPZ01 Russell Impagliazzo, Ramamohan Paturi, and Francis Zane, Which Problems Have Strongly Exponential Complexity?, JCSS 2001.
GGM86 Oded Goldreich, Shafi Goldwasser, and Silvio Micali, How to Construct Random Functions, JACM 1986.

Similar Courses

Here are several courses with closely related material and useful lecture notes or slides:

Last updated: August 13, 2026.