Teaching
In the past, I have taught the following courses.
Concepts of Programming Languages (TU Delft, 2019–2024)
A second year’s bachelor course that introduces students to fundamental programming language concepts, including functional programming, imperative programming, lazy evaluation, type checking, and object-oriented programming. Students study these concepts by writing definitional interpreters in Scala.
The course was inspired by Shriram Krishnamurthi’s PLAI book.
Compiler Construction (TU Delft, 2022-2024)
A first year master’s course that introduces students to techniques for multi-pass compiler construction. Students study the concepts by writing their own compiler for a Scheme subset (including arithmetic expressions, lets, boxes, and functions), targeting X86 code.
The course was based on Jeremy Siek’s Essentials of Compilation book.
System Validation (TU Delft, 2020-2022)
A first year master’s course that introduces students to modeling and systems as labeled transition systems, verifying properties of models, and using model-based testing to validate that the model is correct with respect to the modeled system.
The course was based on Jan Friso Groote and Mohammad Reza Mousavi’s Modeling and Analysis of Communicating Systems book.