COSE212: Programming Languages, 2026 Fall
The primary goal of this course is to learn essential concepts of programming languages by designing and implementing their interpreters.
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 @ 610, IT & General Education Center (정운오IT교양관)
- Teaching Assistant: cose212@googlegroups.com
- Office hours: By appointment via e-mail
Course Materials
- Self-contained lecture notes are provided.
- Reference:
Grading
- 3 Projects: 0%
- You will implement three different mini languages: MiniFSharp, MiniPython, and MiniScala.
- They are not graded and need no submission. However, some exam questions might be related to them, so we strongly recommend solving them by yourself.
- Midterm exam: 40%
- Final exam: 50%
- Attendance: 10%
- All or nothing: you get the full 10% if you attend at least 2/3 of the checks, and 0% otherwise.
- There is no attendance check in the first week; it starts on September 7.
Attendance
Please use the LMS for the attendance check.
Exams
- Midterm: October 21 (Wed.) 18:30 – 21:00 (150 min.)
- Final: December 16 (Wed.) 18:30 – 21:00 (150 min.)
- Previous Exams
Lectures without Offline Classes
On the four days listed below, there will be no offline lectures. Instead, lecture videos will be uploaded to the LMS.
- October 5 (Mon.) / 7 (Wed.) – International Conference
- October 12 (Mon.) / 14 (Wed.) – International Conference
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 follow the step-by-step installation guide:
If you prefer to install them yourself:
- JDK 21 (LTS) – Eclipse Temurin (JDK 17 also works; JDK 25 or later is not supported)
- sbt – https://www.scala-sbt.org/download/
Online Interpreters
In this course, you will implement interpreters for the following languages:
Schedule
| # | Date | Title | Update | Homework | |
|---|---|---|---|---|---|
| Part 0: Basic Concepts | |||||
| 0 | 09/02 | Course Overview | 08/31 | ||
| 1 | 09/07 | Basic Introduction of Scala | 09/06 | ex00 | |
| Part 1: Untyped Languages | |||||
| 2 | 09/09 | Syntax and Semantics (1) | 09/09 | ||
| 3 | 09/14 | Syntax and Semantics (2) | 09/11 | ex01 | |
| 4 | 09/16 | Identifiers (1) | 09/11 | ||
| 5 | 09/21 | Identifiers (2) | 08/31 | ex02 | |
| 6 | 09/23 | First-Order Functions | 08/31 | ex03 | |
| 7 | 09/28 | First-Class Functions | 08/31 | ex04 | |
| 8 | 09/30 | Lambda Calculus | 08/31 | proj01 | |
| 9 | 10/05 | Recursive Functions | 08/31 | ex05 | |
| 10 | 10/07 | Mutable Data Structures | 08/31 | ex06 | |
| 11 | 10/12 | Mutable Variables | 08/31 | ex07 | |
| 12 | 10/14 | Garbage Collection | 08/31 | ||
| 13 | 10/19 | Lazy Evaluation | 08/31 | ex08 | |
| 10/21 | Midterm Exam | Lectures 1 - 13 | |||
| 14 | 10/28 | Continuations (1) | 08/31 | ||
| 15 | 11/02 | Continuations (2) | 08/31 | ex09 | |
| 16 | 11/04 | First-Class Continuations | 08/31 | ex10 | |
| 17 | 11/09 | Compiling with Continuations | 08/31 | proj02 | |
| Part 2: Typed Languages | |||||
| 18 | 11/11 | Type Systems | 08/31 | ||
| 19 | 11/16 | Typed Languages | 08/31 | ex11 | |
| 20 | 11/18 | Typing Recursive Functions | 08/31 | ex12 | |
| 21 | 11/23 | Algebraic Data Types (1) | 08/31 | ||
| 22 | 11/25 | Algebraic Data Types (2) | 08/31 | ex13 | |
| 23 | 11/30 | Parametric Polymorphism | 08/31 | proj03 ex14 | |
| 24 | 12/02 | Subtype Polymorphism | 08/31 | ex15 | |
| 25 | 12/07 | Type Inference (1) | 08/31 | ||
| 26 | 12/09 | Type Inference (2) | 08/31 | ex16 | |
| 27 | 12/14 | Course Review | 08/31 | ||
| 12/16 | Final Exam | Lectures 14 - 26 | |||