Bernardo Toninho

Assistant Professor
Office: DI P2/1

Research Overview

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”).

See my research page for a (likely outdated) list of projects, or my publications page for a (usually up-to-date) list of papers.


Concurrent Programming Languages (Fall 2022)

Introduction to Programming (Fall 2022)

Past courses are listed on my teaching page.


I was one of the organizers of the Programming Languages Mentoring Workshop (PLMW) at POPL 2019 and I was one of the judges of the Student Research Competition at SPLASH 2019.

I am serving / have served on the program committees for:

Elsewhere on the Web

Here are my profiles at some sites I actively use: