My main research area is performance engineering, analysis and optimisation, but I have other interests too.  I am always looking for high-quality PhD students and usually have fully funded positions available.  If you are interested in any of the topics/areas below please either contact me for more details or include my details on your PhD application form.  If you’re interested in a related project that isn’t listed here feel free to email me with your proposal/ideas.  Further details on how to apply can be found here.

My Current Research Interests

Engineering for High-Performance

Parallel programming, e.g. for multi-core, cluster, or custom hardware platforms is a messy business.  A key challenge is to provide the right high-level formalisms that enable programmers to specify their problems at an abstract level and then to exploit domain knowledge, smart compilers and tools to develop efficient implementations from those specifications.  I am interested in all aspects of this problem, including:

  • Domain-specific languages, libraries and tools for high-performance computing
  • Static and dynamic analysis of programs for optimizing performance
  • Software performance engineering and testing
  • Performance modelling and performance analysis
  • Workflow performance analysis and optimisation
  • Performance debugging and performance visualization

Virtual Time Program Execution

Virtual-time program execution (VTE) is about supporting time dilation, i.e. the dynamic expanding and contracting of time, during the execution of a program, in order to simulate the effect of speeding up or slowing down specified parts of an application or its supporting platform.  This provides a powerful way to augment traditional profilers because it enables you to explore the potential benefits of code optimization without having to change the code.  It also allows real programs to communicate seamlessly with stubs representing, for example, models of missing parts of a partially-completed application or replacements for existing but non-performant code.  Project ideas include:

  • Sequential, distributed and parallel/multicore frameworks for VTE
  • Model-based software performance testing in virtual time
  • Bottleneck detection and bottleneck scaling in virtual time
  • Virtual-time operating systems
  • Validation/evaluation of VTE systems, e.g. using bespoke applications or software repositories

Functional programming

Functional and logic programming languages provide an elegant side-effect-free paradigm of computing which makes them especially amenable to formal analysis, transformation and, in particular,  parallelisation.  Project ideas include:

  • Type safe embedded domain-specific languages
  • Functional programming for programming multi-core and/or custom computing systems*
  • Functional/logic/combined languages for teleo-reactive programming
  • Novel applications of functional programming


As Director of Studies I have an interest in developing novel teaching and learning content, methods and tools. As an example, there is enormous potential for developing new tools for supporting teaching and learning at scale, e.g. exploiting artificial intelligence and machine learning. I would be interested in supervising any project that facilitates evidence-based research in this area.