Andrew Rice

I am a University Senior Lecturer in the University of Cambridge Computer Laboratory working in the Digital Technology Group. I am also the Hassabis Fellow in Computer Science and Director of Studies in Computer Science at Queens' College.

Want to record how you use your Android phone? Install our free Device Analyzer project and contribute to research at the same time.


My current research activity focuses on programming and software engineering:

  • Programming languages and tools in the sciences (more detail)
  • 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 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].

I organise the DTG weekly seminar series. Upcoming talks are advertised on the DTG list at

More information: publications, talks & presentations and posters.

Recent programme committees/reviewing: ACM Computing Surveys, MASCOTS 2012, SIGMETRICS 2012, Buildsys 2011, AFRICOMM 2011, MASCOTS 2011 (PC Chair), Sustalnet 2011, PerCom 2011 (PhD programme)


I am Director of Studies in Computer Science at Queens'. We admit between 6 and 8 undergraduates a year. In addition to core teaching I organise a variety of other activities for Queens' Computer Scientists. You can find out more at the Queens' College Computer Science blog.

Lecturing: Currently I teach Programming in Java for Part 1A of the CS Tripos; and Further Java and Prolog for Part 1B of the CS Tripos

Previous lecturing: I taught Programming for Mobiles for the MPhil in Advanced Computer Science from 2010-2013.

Part II Projects and Part III/ACS projects: there are a variety of suggestions from my CamFort grant invilving program analysis, parsing and visualisation.


The Otter (Online Teaching Tools) website is used within the department for a variety of teaching needs. All the source code is on GitHub: dashboard, signups, questions, handins. The live site is available here: (requires a Cambridge Raven account).

Android applications resulting from undergraduate projects or our research activity.

PushOggDecoder is a Java library for extracting bit streams from an Ogg container.

Cantag is a machine vision framework written in C++ which provides various mechanisms for tracking two dimensional (2D) marker tags for barcode reading, 3D overlay or recovering position and pose.

Tinytag is a minimal 2D machine-vision barcode reader written in C without any floating point requirements and so is suitable for mobile phones and embedded platforms.

Full: [colour] [grey]

Postal Address:

William Gates Building, 15 JJ Thomson Avenue, Cambridge, CB3 0FD.