As lecturer

Course @
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 @
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