Research
My research is in software engineering. I am interested in capturing existing good practice and domain knowledge in automatable and analysable forms to improve software quality. To this end, I study:
- Principled simulation engineering: The use of domain-specific modelling languages for the systematic engineering of simulations and digital twins, to support trust in these simulations and their results. Applications include healthcare and biology. I did a Computerphile video on digital twins, which you can find here.
- Foundations of model-driven engineering: A particular focus here is on techniques for modularising models and transformations to enable modular reasoning and reuse. Example work includes work on Reuseware and on the use of GTS morphisms for DSL modularisation. Another focus area is on finding optimal models. Check out our tools MDEOptimiser and Acapulco. I also run an international network on model-driven engineering – MDENet. I did two Computerphile videos on model-driven engineering (MDE) and DSLs; you can find them here and here. Find some other videos of a talk on DSLs I gave for the London Java Community here and here.
- Computer science education: In particular, how we teach programming and software development to learners of all ages and how this can be improved. Example work includes research on the use of software frameworks in UG teaching, automated assessment of programming tasks, and work on concept development in learners of programming.