skip to content


Interdisciplinary Research Centre


My current research activity focuses on programming and software engineering:

  • Programming languages and tools in the sciences (more detail)
  • Application of machine learning techniques to software development. I will be running a course on the MPhil in Advanced Computer Science on this subject this year.
  • Static analysis and software development. I spent 10 months from in 2016/17 working at Google in Mountain View as a Visiting Researcher. I worked in the Java compiler team and (among other things) developed new checks for their static analysis tool Error Prone. I talked about my work at the CREST workshop on Bimodal software analysis: Slides + video.
  • Adaptive learning and personalised learning. I help manage the Isaac Physics project and also the Automated Language Teaching and Assessment (ALTA) project which provide excellent sources of data and support for experiments.

I have previously worked on understanding the power consumption of smart phones, particularly Android devices (more detail), and the energy consumption and energy efficiency of computing infrastructure (more detail)

These themes are derived from my work with Andy Hopper on the Computing for the Future of the Planet project in which we sought to identify Computer Science research questions in the context of global issues such as climate change, over-population, famine and desertification. A high level summary of the research themes is given in our brochure: [a4 version][folding version].


Key publications: