COSE215: Theory of Computation, 2026 Spring
Course Information
- Instructor: Jihyeok Park (박지혁)
- Office: 507, IT & General Education Center (정운오IT교양관)
- Email: jihyeok_park@korea.ac.kr
- Lecture: 13:30–14:45 Mondays and Wednesdays @ B102, IT & General Education Center (정운오IT교양관)
- Teaching Assistant:
- Office hours: 14:00–16:00 Tuesdays (by appointment)
Course Materials
- Self-contained lecture notes are provided.
- Reference: Introduction to Automata Theory, Languages, and Computation (3rd Edition)

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:
- JDK >= 17 - https://www.oracle.com/java/technologies/downloads/
- sbt - https://www.scala-sbt.org/download.html
- Scala - https://www.scala-lang.org/download/
Schedule
| # | Date | Title | Update | Code | Homework | |
|---|---|---|---|---|---|---|
| Part 0: Basic Concepts | ||||||
| 0 | 03/04 | Course Overview | 03/04 | |||
| 1 | 03/09 | Mathematical Preliminaries | 03/04 | |||
| 2 | 03/11 | Basic Introduction of Scala | 03/04 | 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 | ||||