I am a member of the High Performance and Distributed Computing research
cluster in the School of Electronics, Electrical Engineering and Computer
Science at Queen's University Belfast. I have a long-held interest in the
pragmatic use of formal specification notations to model and reason about
systems, most recently parallel/distributed systems built using parallel patterns (algorithmic skeletons).
include variability management, particularly in the context of software
product lines and feature modelling. Previously
I have worked in the areas of program transformation, formal methods, and
language design for parallel systems.
I was chair of PDP 2013 and co-chair of PDP 2014
A list of my publications can be found on ResearchGate
(probably the most complete list). And on PURE.
I currently co-supervise six PhD students:
Sakil Barbhuiya: Data collection and analytics.
Esha Barlaskar: Scheduling jobs for cloud execution.
Michael Campbell: Automated support for accelerator kernel development.
Jonathan Kelly: Feature Modelling for Embedded Systems.
Stuart McCool: Tool support for parallel application development.
Stephen Murray: Feature Modelling for Parallel Systems.
I teach two final-year courses:
"Algorithms: Analysis and Applications" which explores the
complexity of a range of classical algorithms including sorting, searching,
pattern matching, etc.
"High Performance Computing: Principles Of Parallel Programming"
which explores fundamentals of parallel programming and emphasises practical
aspects via MPI, OpenMP and CUDA.
Previously I have taught courses on Introductory Programming, Concurrency
Theory and Practice, Formal Methods (VDM), Computation Theory, Language
Semantics, Human-Computer Interaction.