David's research is on applying programming language-based techniques to the development of safe and predictable systems, with a strong emphasis on concurrent and distributed systems. In these areas, I develop and apply techniques based on behavioural types for reasoning about functional (e.g. correctness) and extra-functional (e.g. cost) of concurrent and distributed systems. I developed high-level frameworks for parallel programming that provide guarantees of correctness by construction, and I developed static cost analysis for predicting the potential achievable speedups. Additionally, I am very interested in build certified tools and languages, mostly in (but not limited to) the Coq interactive theorem prover.
I am a member of the following research groups:
Programming Languages and Systems Research Group
Broadly speaking, my research interests are focused on the development and application of techniques for reasoning about functional (correctness) and extra-functional (e.g. execution costs) properties of systems, and the development of certified tools in dependently typed languages and theorem provers.
COMP6580: Programming Language Implementation
COMP3370/COMP5810: Computers and the Cloud/An Introduction to Computer Systems
COMP6640: Language-based Security
I also supervise COMP6000 and COMP6200 projects. Please get in touch if you would like to discuss an idea.