COSE215: Theory of Computation, 2026 Spring

COSE215: Theory of Computation, 2026 Spring

Course Information

Course Materials

Grading

Please use the LMS for the attendance check and the submission of homework.

  • Homework: 20%
  • Midterm: 30%
  • Final: 40%
  • Attendance: 10%

Exams

  • Midterm: April 22 (Wed.) 13:30 – 14:45 (75 min.)
  • Final: December 17 (Wed.) 13:30 – 14:45 (75 min.)
  • Previous Exams

Policy on Academic Integrity

The use of Large Language Models (LLMs), such as ChatGPT, is permitted and encouraged. However, students remain fully responsible for the originality and comprehension of all submitted work. The following rules apply when evaluating coding assignments. Violations will be treated as academic dishonesty and will result in one of the following consequences: a grade of zero (0) on the assignment, or, in the most serious cases, an automatic grade of F for the entire course.

  • Submissions that exhibit direct copy-and-paste similarity with other students’ work, or copying with superficial or uninformed modifications, constitute academic dishonesty.

  • The instructor reserves the right to require an oral explanation of any submitted code. Inability to provide a clear, reasonable, and coherent explanation will be deemed proof that the work is not the student’s own.

Installation of Scala and sbt

Scala is a general-purpose programming language combining object-oriented and functional programming in one concise, high-level language. Scala’s static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.

The interactive build tool sbt is built for Scala and Java projects.

Please download and install them using the following links:

Schedule

# Date Title PDFUpdateCodeHomework
Part 0: Basic Concepts
0 03/04 Course Overview

03/04
(14:16)

1 03/09 Mathematical Preliminaries

03/04
(13:05)

2 03/11 Basic Introduction of Scala

03/04
(13:05)

code
ex01
Part 1: Finite Automata
3 03/16 Deterministic Finite Automata (DFA) code
4 03/18 Nondeterministic Finite Automata (NFA) code
5 03/23 ε-Nondeterministic Finite Automata (ε-NFA) code
hw01
(by 03/30)
6 03/25 Regular Expressions and Languages code
7 03/30 Equivalence of Regular Expressions and Finite Automata
8 04/01 Closure Properties of Regular Languages ex02
9 04/06 The Pumping Lemma for Regular Languages ex03
10 04/08 Equivalence and Minimization of Finite Automata ex04
Part 2: Pushdown Automata
11 04/13 Context-Free Grammars (CFGs) and Languages (CFLs) code
hw02
(by 04/20)
12 04/15 Examples of Context-Free Grammars
13 04/20 Parse Trees and Ambiguity
04/22 Midterm Exam Lectures 1 - 13
14 04/29 Pushdown Automata (PDA) code
15 05/04 Examples of Pushdown Automata hw03
(by 05/11)
16 05/06 Equivalence of Pushdown Automata and Context-Free Grammars
17 05/11 Deterministic Pushdown Automata (DPDA)
18 05/13 Normal Forms of Context-Free Grammars
19 05/18 Closure Properties of Context-Free Languages ex05
20 05/20 The Pumping Lemma for Context-Free Languages
Part 3: Turing Machines / Computability
21 05/25 Turing Machines (TMs) code
22 05/27 Examples of Turing Machines
23 06/01 Extensions of Turing Machines hw04
(by 06/08)
24 06/03 The Origin of Computer Science
25 06/08 Undecidability
26 06/10 P, NP, and NP-Complete Problems
27 06/15 Course Review
06/17 Final Exam Lectures 14 - 26