I am interested in all aspects of programming language research. Check through my publications and seminars for a cross-section of my research areas. Below I highlight my key areas based around the theme of Complex Systems Engineering.

Memory Management

Automatic memory management, or garbage collection, is now mainstream thanks to managed runtime systems like Java and .NET. I work on the construction of rigorous models for memory management, using techniques like micro-economics, control theory and statistics-based machine learning. I am on the steering committee of the UK memory management network.


I focus on the static single assignment form (SSA). See my PhD for details of extensions to SSA. I maintain an SSA bibliography for the community.

Many-core Parallelism

As processors provide increasing numbers of hardware threads, programmers must find appropriate ways to leverage this parallelism in their software. I am investigating runtime support for many-core parallelism, in a managed runtime environment.