Programming languages are a tool for humans to communicate with computers. Just like natural language, programming languages have underlying theories, with which one can reason rigorously about complex programs. This course aims to equip students with fundamental knowledge of programming language theory. In particular, we focus on the semantics of continuations, a concept that can express many practical features such as exceptions and coroutines.
In this course, students will acquire the following skills.
- Express various programming language features as manipulation of continuations
- Explain the meaning of programs from a mathematical point of view
functional programming, continuations, control operators, algebraic effects and handlers, lambda calculus, operational semantics, type systems
✔ Specialist skills | Intercultural skills | ✔ Communication skills | Critical thinking skills | Practical and/or problem-solving skills |
Each lecture introduces a new concept, language construct, etc. while providing hands-on exercises.
Course schedule | Required learning | |
---|---|---|
Class 1 | Introduction | Instructed in the class. |
Class 2 | Basics of functional programming | Instructed in the class. |
Class 3 | Continuations | Instructed in the class. |
Class 4 | Control operators (1) | Instructed in the class. |
Class 5 | Control operators (2) | Instructed in the class. |
Class 6 | Algebraic effects and handlers | Instructed in the class. |
Class 7 | Mixing effects | Instructed in the class. |
Class 8 | Linguistic applications of continuations | Instructed in the class. |
Class 9 | Untyped lambda calculus | Instructed in the class. |
Class 10 | Simply typed lambda calculus | Instructed in the class. |
Class 11 | Semantics of control operators (1) | Instructed in the class. |
Class 12 | Semantics of control operators (2) | Instructed in the class. |
Class 13 | Semantics of algebraic effects and handlers | Instructed in the class. |
Class 14 | Wrap-up | Instructed in the class. |
To enhance effective learning, students are encouraged to spend approximately 100 minutes preparing for class and another 100 minutes reviewing class content afterwards (including assignments) for each class.
They should do so by referring to textbooks and other course material.
N/A
N/A
Evaluation is done based on engagement in the class (20%) and performance in assignments (80%).
Experience in functional programming would be helpful, but is not required.