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 Homework Assignments: 15%
- Midterm exam: 40%
- Final exam: 40%
- Attendance: 5%
- All or nothing: you get the full 5% 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.
Homework #0 (the Scala tutorial) is not graded, but it is a preparation for the upcoming homework assignments, so submitting it as practice is strongly recommended.
Attendances and Homework
Please use the LMS for the attendance check and the submission of homework.
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.
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 | ||||
| 1 | 09/07 | Basic Introduction of Scala | hw00 (by 09/14) | |||
| Part 1: Untyped Languages | ||||||
| 2 | 09/09 | Syntax and Semantics (1) | ||||
| 3 | 09/14 | Syntax and Semantics (2) | ex01 | |||
| 4 | 09/16 | Identifiers (1) | ||||
| 5 | 09/21 | Identifiers (2) | ex02 | |||
| 6 | 09/23 | First-Order Functions | ex03 | |||
| 7 | 09/28 | First-Class Functions | ex04 | |||
| 8 | 09/30 | Lambda Calculus | hw01 (by 10/14) | |||
| 9 | 10/05 | Recursive Functions | ex05 | |||
| 10 | 10/07 | Mutable Data Structures | ex06 | |||
| 11 | 10/12 | Mutable Variables | ex07 | |||
| 12 | 10/14 | Garbage Collection | ||||
| 13 | 10/19 | Lazy Evaluation | ex08 | |||
| 10/21 | Midterm Exam | Lectures 1 - 13 | ||||
| 14 | 10/28 | Continuations (1) | ||||
| 15 | 11/02 | Continuations (2) | ex09 | |||
| 16 | 11/04 | First-Class Continuations | ex10 | |||
| 17 | 11/09 | Compiling with Continuations | hw02 (by 11/23) | |||
| Part 2: Typed Languages | ||||||
| 18 | 11/11 | Type Systems | ||||
| 19 | 11/16 | Typed Languages | ex11 | |||
| 20 | 11/18 | Typing Recursive Functions | ex12 | |||
| 21 | 11/23 | Algebraic Data Types (1) | ||||
| 22 | 11/25 | Algebraic Data Types (2) | ex13 | |||
| 23 | 11/30 | Parametric Polymorphism | hw03 (by 12/14) ex14 | |||
| 24 | 12/02 | Subtype Polymorphism | ex15 | |||
| 25 | 12/07 | Type Inference (1) | ||||
| 26 | 12/09 | Type Inference (2) | ex16 | |||
| 27 | 12/14 | Course Review | ||||
| 12/16 | Final Exam | Lectures 14 - 26 | ||||