My research broadly focuses on the application of language-based techniques to the development of more robust and safer systems, with a non-exclusive emphasis on concurrent and distributed systems. In these settings, I develop and apply techniques grounded on (substructural) type theory, such as those based on Linear Logic and Session Types. I am also interested in using type and logic-based techniques to verify programs in real languages such as Go, Rust and Haskell.
I have been and continue to be heavily involved with the development and exploration of the logical foundations of Session Types.
Recently, I have been involved in research on the addition of generics to the Go programming language and how to effectively compile generics in a language with the design constraints of Go. I am also a co-developer of Refinement Kinds, a new framework for type-based meta-programming arising from the lifting of the concept of refinement types to the level of kinds (the “types of types”).
Introduction to Programming (Winter 2020)
Concurrent Programming Languages (Winter 2020)
Past courses are listed on my teaching page.
I am serving / have served on the program committees for:
Elsewhere on the Web
Here are my profiles at some sites I actively use: