Some of my favourite things are:

  1. Building software
  2. Learning to build software better
  3. Sharing my findings with the curious
When I teach, I typically get to do all three!


Software engineering is about trade-offs: we're frequently faced with making difficult decisions (with incomplete information) to which there is no right answer. As such, I prefer to emphasise skills in analysis, evaluation and reflection when I teach.

I have built software at IBM, for startup companies, and as part of Eclipse (one of the largest open-source foundations). I often draw on these experiences during my teaching.

I am currently trialling a "flipped classroom" model in which I aim to take a coaching role (rather than an instructing role). To make this possible, lectures are pre-recorded and classroom time is used not for "delivering" new material, but instead for identifying misconceptions, providing clarifications, and guiding students as they apply theory to practical problems.

Student Projects

I supervise final-year undergraduate and Masters projects on software engineering. A list of my current and former victims is below.


  • Tim Waterson - Mutation testing as a service
  • Katherine Smith - How is mutation testing really used?
  • Liam Mullane - Uncovering equivalent mutants
  • James Shaw - A program mutator for any language
  • Katie Mills - Kill me quick: speeding up mutation testing




Awards and Qualifications

I have twice been nominated for a Vice Chancellor's Teaching Award at the University of York, in 2011 and 2013.

I received a Postgraduate Certificate in Academic Practice and became a Fellow of the Higher Education Academy in 2014.