I teach a range of subjects at Catz.
I teach several of the first-year programming courses. I enjoy teaching these courses, as they provide powerful and elegant techniques for designing and verifying programs that would otherwise be difficult to get right. These courses build important foundations for much of the degree.
I also teach the second-year Concurrency and Concurrent Programming courses. These courses are close to my main research interests. I enjoy using my research experience to inform my teaching, and vice versa.
My research is related to Concurrency, Concurrent Programming, and Verification: developing better ways to write and reason about concurrent programmes; developing mathematical models for reasoning about different aspects of concurrency; and developing algorithms and tools for verifying concurrent systems. I previously carried out research in Computer Security, developing similar techniques to analyse security systems, in particular security protocols, either to verify them or to find attacks.