I mainly enjoy teaching courses related to Programming Languages, though in general I like the challenge of finding a simple way to explain complex concepts in Computer Science.
In 2013 I was delighted to receive the award for Best Teaching for Undergraduates at the Imperial College Union Student Academic Choice Awards, and in 2014 I was shortlisted for the award for Best Innovation.
- Programming II (120.2) - an introductory course to first year undergraduates that covers most of the Java language (since session 2011-2012)
- Software Reliability (440) - a final year MEng course on software verification and testing, also offered to selected MSc student (since session 2012-2013)
- 6th Halmstad Summer School on Testing, HSST 2016. I will lecture on Testing and Verification Methods for Many-Core Concurrency.
- UPMARC Multicore Computing Summer School 2015. Title of lectures: How Reliable Are Your Many-Core Compute Kernels?
- École de Recherche on Semantics and Tools for Low-Level Concurrent Programming, ENS Lyon, January 2013. Lectured on formal verification techniques for GPU kernels.
- SICSA International Summer School on Advances in Programming Languages, Heriot-Watt University, Edinburgh, August 2009. Gave lecture entitled Multicore Compilation: an Industrial Approach, and designed practical session based on Codeplay’s Offload C++.
- Software Verification (Hilary Term 2011). Gave two lectures on Predicate Abstraction and Counterexample Guided Abstraction Refinements.
- Software Verification (Hilary Term 2010). Designed and oversaw practicals on Bounded Model Checking and Counter Example Guided Abstraction Refinement.
- Compilers (Hilary Term 2010). Gave guest lectures on Type Checking and Runtime Environments. Also took classes and helped with practicals.
- Object-Oriented Programming (Michaelmas Term 2009). Gave guest lectures on Object Identity and Memory Management. Took students from Merton College and Corpus-Christi College for tutorial sessions.
Guest lectures while at Codeplay Software Ltd:
- Advances in Programming Languages course at University of Edinburgh (2008 and 2009). Gave guest lectures: The Cell Processor: a Compiler Challenge (2008) and Method Duplication: Automating Code Migration to Multicore (2009).
- Compilers course at University of Glasgow (2008 and 2009). Gave same guest lectures as for the Edinburgh course above.
- Data Structures and Algorithms (Autumn 2006). Gave guest lectures on Abstract Data Types and Binary Trees.
- CS1P Introductory Programming (2002-2006). Tutored groups of 1st year undergraduates.
- CS1Q Introduction to HCI, Databases and Systems (2002-2006), Tutored groups of 1st year undergraduates.