COSE212: Programming Languages, 2024 Fall
Course Information
- Instructor: Jihyeok Park (박지혁)
- Office: 609A, Science Library Bldg (과학도서관)
- Email: jihyeok_park@korea.ac.kr
- Lecture: 13:30–14:45 Mondays and Wednesdays @ 205, Woojung Hall of Informatics (우정정보관)
- Teaching Assistant:
- Office hours: 14:00–16:00 Tuesdays (by appointment)
Course Materials
- Self-contained lecture notes are provided.
- Reference:
Attendances and Homework
Please use the Blackboard for the attendance check and the submission of homework.
Discussion and Questions
Please use the CampusWire for discussion and questions about the course.
- Link: https://campuswire.com/c/G2CA06AE4
- Passcode: See the Blackboard announcement.
Exams
- Midterm: October 23 (Wed.) 18:30 – 21:00 (150 min.)
- Final: December 18 (Wed.) 18:30 – 21:00 (150 min.)
- Previous Exams
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 >= 8 - https://www.oracle.com/java/technologies/downloads/
- sbt - https://www.scala-sbt.org/download.html
- Scala - https://www.scala-lang.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 | 09/04 | |||
1 | 09/04 | Basic Introduction of Scala | 09/03 | hw01 (by 09/25) | ||
Part 1: Untyped Languages | ||||||
2 | 09/09 | Syntax and Semantics (1) | 09/09 | |||
3 | 09/11 | Syntax and Semantics (2) | 09/10 | ex01 | ||
4 | 09/16 | Identifiers (1) | 09/14 | |||
5 | 09/18 | Identifiers (2) | 09/20 | ex02 | ||
6 | 09/23 | First-Order Functions | 09/23 | ex03 | ||
7 | 09/25 | First-Class Functions | 10/12 | ex04 | ||
8 | 09/30 | Lambda Calculus | 09/30 | hw02 (by 10/14) | ||
9 | 10/02 | Recursive Functions | 10/03 | ex05 | ||
10 | 10/07 | Mutable Data Structures - Boxes | 10/16 | ex06 | ||
11 | 10/09 | Mutable Variables | 10/19 | ex07 | ||
12 | 10/14 | Garbage Collection | 10/14 | |||
13 | 10/16 | Lazy Evaluation | 10/16 | ex08 | ||
10/23 | Midterm Exam | Lectures 1 - 13 | ||||
14 | 10/28 | Continuations (1) | 10/28 | |||
15 | 10/30 | Continuations (2) | 10/30 | ex09 | ||
16 | 11/04 | First-Class Continuations | 11/08 | ex10 | ||
17 | 11/06 | Compiling with Continuations | 11/04 | hw03 (by 11/20) | ||
Part 2: Typed Languages | ||||||
18 | 11/11 | Type Systems | 11/11 | |||
19 | 11/13 | Typed Languages | 11/13 | ex11 | ||
20 | 11/18 | Typing Recursive Functions | 11/18 | ex12 | ||
21 | 11/20 | Algebraic Data Types (1) | 11/18 | |||
22 | 11/25 | Algebraic Data Types (2) | ex13 | |||
23 | 11/27 | Parametric Polymorphism | hw04 (by 12/11) ex14 | |||
24 | 12/02 | Subtype Polymorphism | ex15 | |||
25 | 12/04 | Type Inference (1) | ||||
26 | 12/09 | Type Inference (2) | ex16 | |||
27 | 12/11 | Course Review | ||||
12/18 | Final Exam | Lectures 14 - 26 |