- Professor of Computer Science
I am Professor of Computer Science in the University of Cambridge Department of Computer Science and Technology and the Hassabis Fellow in Computer Science and Director of Studies in Computer Science at Queens' College.
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.
- 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 and Isaac Computer Science projects 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].
Themes
Teaching
I teach mostly courses on programming languages: 1A Programming in Java, 1B Further Java, 1B Prolog. Since most of my teaching involves learning a practical skill I've experimented over the years with shifting away from lectures and introduced teaching using practical classes and video lectures. It was for initiatives including this that in 2014 I was awarded the Pilkington Prize for excellence in teaching, an annual University-wide award.
Previous lecturing: I taught Programming for Mobiles (2010-2013) and Machine Learning for Programming (2018-2020) for the MPhil in Advanced Computer Science.