My research background is in concurrency: designing, building and analysing software and hardware systems in which multiple activities take place at the same time. Concurrency is a vital part of modern computer science: it gives us the conceptual tools that enable us to work effectively with the parallel processing architectures that have become ubiquitous over the last decade.
One focus of my current work is the use of concurrency in scientific simulation, to model naturally-concurrent systems with very large numbers of interacting entities, and to exploit that natural concurrency in order to obtain efficient parallel execution. I work within the cancer and games groups at Abertay -- and with colleagues at other universities -- on a variety of scientific problems.
A particular interest is in multi-scale simulations of cancer cell growth, linking detailed low-level models of chemical signalling within the cell to larger-scale physical simulations of cell interactions. However, I'm interested in developing reusable technologies for these kinds of problems -- and the approaches that we use to study the treatment of cancer can equally well be applied to the development of electricity distribution networks.
My other major area of interest is in the tools that we use to build software systems -- in particular, support for safe, efficient, concurrent software development in modern programming languages. The last five years have seen a resurgence in interest in message-passing concurrency, with languages such as Go and Rust showing substantial influence from CSP and CSP-derived languages (e.g. occam, which I spent most of my formative years as a researcher working with). This period has also -- finally -- started to show a shift away from unsafe languages such as C and C++, and a move towards safety and security by construction in software engineering. Along with cybersecurity colleagues within AMG, I work on projects that aim to improve the correctness and security of complex software systems.