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.
Compilers
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.