University of Strathclyde, Glasgow, UK

Autumn 2016/Spring 2017 - Advanced Functional Programming, 4th year undergraduate course, shared with Conor McBride.
Autumn 2016 - Functional Programming, 3rd year undergraduate course, shared with Bob Atkey, Fredrik Nordvall Forsberg, and Conor McBride.
Autumn 2015/Spring 2016 - Supervised two 4th year undergraduate theses.
Autumn 2015/Spring 2016 - Advanced Functional Programming, 4th year undergraduate course, shared with Conor McBride.

Tallinn University of Technology, Tallinn, ESTONIA

Autumn 2014 - Advanced programming, graduate course, 6.0 ECP, shared with Juhan Ernits.
Autumn 2013 - Advanced programming, graduate course, 6.0 ECP, shared with Juhan Ernits.
Spring 2013 - Advanced algorithms and data structures, graduate course, 6.0 ECP.
Spring 2012 - Type theory, graduate course, 3.0 ECP.
Spring 2012 - Advanced algorithms and data structures, graduate course, 6.0 ECP, shared with Pavel Grigorenko.
Spring 2011 - Advanced algorithms and data structures, graduate course, 6.0 ECP.

The University of Tartu, Tartu, ESTONIA

Autumn 2011 - Type theory, graduate level course, 6.0 ECP, shared with Varmo Vene.
Spring 2010 - Type theory, graduate course, 6.0 ECP, shared with Varmo Vene.

The University of Nottingham, Ningbo, CHINA

From September 2006 until April 2007 I worked as a teaching fellow at Nottingham University Ningbo, China. I gave a 22 lecture undergraduate course on functional programming and also helped with the Java programming course and the logic course.

The University of Nottingham, Nottingham, UK

Between 2004 and 2008 I was a tutor on the following courses: Computer Aided Formal Reasoning; Functional Programming; Compilers; Mathematics for Computer Scientists; Database Systems.