As lecturer

Course @
Computer Architecture
Foundational digital systems course on how computer hardware works. We start with elementary logical gates, move on to sequential circuits, and climb the abstraction ladder from there. Towards the end of the course, students have implemented a very limited subset of the 32-bit RISCV architecture in a simulator. The course is concluded with a group project where students implement an extension to the processor that they built. This course was taught together with Tim Steenvoorden.
Formal Languages and Automata
An introduction to formal language theory and automata, starting at regular expressions and finite automata. The course then continues as many other courses do, treating context-free grammars, pushdown automata, and eventually Turing machines and undecidability. Taught together with Nikè van Vugt.
Kleene Algebra
Introduction to Kleene Algebra, its extensions, and its applicability to reasoning about program equivalence. We start with the syntax, relational semantics, and axioms, and build towards Kozen's completeness result. Along the way, we'll learn how to convert rational expressions to automata, and vice versa.
Formalizing and Proving Theorems in Coq
Hand-written proofs can be tricky to get right, and moreover tedious to review properly; proof assistants can help alleviate this problem. This course is aimed at introducing students with a background in formal logic to the Coq proof assistant. Students learn about basic techniques, before moving on to more advanced matters and formalizing a proof of their choice.
Introduction to Computing Using Python (CS 1110)
  • Summer 2021
Introductory programming course, aimed at exposing students to elementary concents from programming. The material included variables, conditional branching, loops, lists, and the basics of recursion. This was an intensive six-week course, with daily lectures and lab assignments, as well as weekly homework and two tests.

As a teaching assistant

Course @
Tutorials
Grading
Lab
Design and Professional Skills(Python programming) UCL
  • Fall 2019
  • Fall 2018
Computability and Complexity UCL
Scenario week(competition à la HashCode) UCL
Complexity LU
Distributed Algorithms VU
  • Fall 2015
Programming Methods(introductory programming course) LU
Challenges in Computer Science(creative programming course) LU