Reader / Director of Education
My publications are available from the University of Kent's Academic Repository.
Writing bug-free software is difficult, and we all too often have only a vague idea of why a particular program seems to do what it is supposed to. To address this, there is a long tradition (going back at least to the 1960s) of building rigorous mathematical proofs that safety critical programs really are correct. However, the techniques for creating these proofs have often failed to scale to large programs, or more complex computing systems. Over the past 10 years, this has begun to change.
My research has two strands working together toward building fully verified software systems:
- the CakeML project on supporting verified programs right down to machine code, and
- understanding concurrent programs that must take advantage of modern multi-core processors, which often have fiendishly non-intuitive memory systems.
My research crosses several areas of Computer Science, including automated reasoning, software verification, semantics, systems, concurrency, and programming language design. I am interested in supervising PhD and masters students in all of these areas. If you are interested, send me an email, and look at this non-exhaustive list of possible CakeML-related projects.