He obtained his Ph.D. from the University of Strathclyde in 2006, and subsequently worked for five years as a post-doctoral researcher with the Verification and Testing group at the University of Sheffield. His research focuses on software testing and the use of machine learning techniques for reverse-engineering useful models of software behaviour.