Over the last decade I’ve lectured and taught Computer Science at several universities. I’ve taken two teaching courses including a PGCAP.

I’ve also taught programming with The Dev Academy here in Sheffield.


During my academic career, I have been fortunate enough to work with the following students and interns:

  • Profir-Petru Partachi, a PhD student at UCL who passed his viva (without corrections!) in December 2020. Profir worked on ways to improve Project Health – that is, automagically fixing GitHub artefacts and software engineering processes using ML and in particular NLP.
  • Benjamin Jones, an intern at Sheffield who worked on metaheuristic optimisation of chemistry simulations on quantum computers. I was more a collaborator than supervisor of Ben. He is now doing a PhD in quantum computing at Bristol.
  • Daniel Blackwell, a final MEng student working on software optimisation for nanosatellite systems. Daniel is now working in biometrics.
  • Faustyna Krawiec, a Summer 2017 intern working on hyperheuristics for learning adaptive metaheuristics by exploiting problem domain knowledge. Faustyna is now studying at Cambridge for a PhD.
  • Xiangyi Yin, an undergraduate working at UCL on invariant prioritisation using mutation testing.
  • Piotr Hosa – working on power management for the Raspberry Pi Cloud. Piotr is a software engineer at Expedia.
  • George Popa – working on the simulation of bacteria in the Unity Engine.
  • Wing Hang Li (until 2015) – Wing is studying for a PhD at the University of Glasgow, looking at the behaviour of “Non-Java” languages on the JVM.
  • Jim Walker (2015) – Jim worked on the Raspberry Pi Cloud project, including successfully running Google’s Kubernetes Orchestration Software on the Pi. See the blog. Jim is now working at AND Digital.
  • Justin McManus (2015) – Offloading and face recognition on a Pi-controlled robot.
  • Hristo Stavrev (2014) – BigGP (Cloud-based GP). Hristo is now working in for SoftServe.
  • Ross Barnie (2014) – A Monitoring System for the Raspberry Pi Cloud.
  • George Kouzmov (2014) – Genetic Programming to evolve web services. George is working at BlackRock.
  • Emilia Vulpe (2013) – Speculative Garbage Collection (EPSRC Vacation Scholarship).
  • Richard Cziva (2013) – a Raspberry Pi Cloud Management System (Kubernetes before there was a Kubernetes). Richard is now doing a PhD at ESnet (Berkeley Lab).
  • Alan Reid (2013) – Superfast migration for the Raspberry Pi Cloud.
  • Robbie Simpson (2012) – lightweight virtualisation for embedded cloud systems (Docker before there was a Docker).
  • Ilze Poca (2012) – implementing evolutionary image compression based on Roger Alsing’s work. Ilze’s project was nominated for a best project prize this year and she is now working at Morgan Stanley.
  • Harry Esslemont (2011) – investigating the impact of noise on heuristic search.
  • Alan Millard (2010 and 2011) – genetic evolution of stochastic models. Alan is now a senior lecturer at the University of Lincoln (I feel old!). This work resulted in a paper that won the best paper prize at SSBSE 2012.
  • Sam Ratcliffe (2010) – searching for invariants using genetic programming. This work resulted in a paper that won a best paper prize at GECCO 2011. Sam is now working at Man Group.


I was a course tutor on two related courses at UCL from 2016-2018:

  • Requirements Engineering and Software Architecture (GS01)
  • Software Abstractions and Systems Integration (GS02)


AT UCL I gave guest lectures on the Research Seminar in Software Engineering (RSSE) course.

I was course coordinator on the Research Readings in Computer Science (RRCS) course at the University of Glasgow from 2011–2013, and continued to teach on the course in 2014. I also gave guest lectures at Glasgow on the SE3 course on Software Engineering, the Professional Software Development course, and the Enterprise Computing course.

During my time at the University of York, I lectured on many topics, including heuristic search, evolutionary computation and programming. I also taught labs on various topics including Real-Time Systems, Discrete Maths, Introductory Programming and UML Modelling.