My research interests are in programming methodology—that is, in better languages for writing computer programs, and better ways of using the languages we already have. I am particularly concerned with functional languages (which emphasize computing with values rather than with actions) and object-oriented languages (which encourage program structures that reflect the structure of the real-world entities they are modelling), and with ways of expressing and reasoning about recurring patterns in software structure.
I am a member of the Algebra of Programming research group. I am chair of IFIP Working Group 2.1 on Algorithmic Languages and Calculi. I have a new research project on
Reusability and Dependent Types
starting in October 2009; if you're interested in this work, drop me a line. I am an editor of the Journal of Functional Programming, with special responsibility for the Functional Pearls section; do consider submitting a paper!
I am also a member of the Software Engineering research group, working particularly with Jim Davies on semantic modelling and model-driven development. We've been developing techniques and tools to support scientists in sharing data—particularly in clinical trials, but also in electronic government.
I am deputy director of the part-time professional Software Engineering Programme, with specific responsibility for the Object Technology subprogramme; for the academic years 2008-2010 I am also Deputy Director of the Computing Laboratory. I have a joint appointment with the Computing Laboratory and the Department for Continuing Education, and am a fellow of Kellogg College. Before taking up this post in 1999, I held lectureships at Oxford Brookes University and the University of Auckland, New Zealand.