My principal research interests are optimization challenges in the commercial aviation sector as well as more general algorithms that bridge the divide between optimization and machine learning. See the sections below for details.
Revenue Management
Optimization in the commercial aviation sector. The commercial aviation sector is a lowmargin business with high fixed costs, namely operating the aircraft themselves.
It is therefore of great importance for an airline to maximize passenger capacity on its network, a process known as revenue management.
Studies have shown that effective revenue management can increase airline revenues by up to 7%, which in today's challenging environment can be the difference between making a profit as opposed to a loss.
There has been a great deal of research on optimization techniques for revenue management, however the majority of existing work focuses on fullservice airlines and their largely outdated capacity allocation models based on customer segmentation.
As a result, there is an urgent need for more sophisticated optimization strategies in revenue management that do not rely on customer segmentation.
Exploratory Data Analysis
Statistical pattern mining algorithms for exploratory data analysis.
The problem of pattern mining, that is extracting interesting patterns from data, has traditionally been formulated as
finding the
most frequent patterns in a dataset. However, more recent approaches
seek to mine those patterns that are considered
statistically the most interesting.
In particular, see our novel probabilistic models for
mining interesting itemsets
(
code) and
mining interesting sequential patterns
(
code).
See the video below for a brief overview:
Machine Learning for Source Code
Machine learning techniques for the analysis of program source code.
Source code has a very welldefined structure making it amenable to machine learning techiniques once suitably adapted. This leads to exciting and novel
applications, for example, see our
live demo of source code summarization using autofolding
based on
our paper and associated
implementation (see video below).
One can also apply statistical pattern mining techniques to source code, for example, in order to mine sequences of API calls, as we have done in our latest
paper.
Bayesian Optimization
Algorithms for the global optimization of functions that are expensive to evaluate.
Such functions need to be approximated using a cheap to evaluate surrogate which can
be iteratively optimized and updated in place of the underlying expensive function.
See
our paper
for a general surrogate optimization algorithm and
follow up paper for
an implementation with improved bounds.
Exploratory Data Analysis
Machine Learning for Source Code
Bayesian Optimization

Branching and Bounding
Improvements for Global Optimization Algorithms with Lipschitz
Continuity Properties (Extended Paper)
C. Cartis, J. M. Fowkes and N. I. M. Gould. Journal of Global Optimization,
vol. 61, no. 3, pp. 429–457, 2015.

A Branch and
Bound Algorithm for the Global Optimization of Hessian Lipschitz
Continuous Functions
J. M. Fowkes, N. I. M. Gould and C. L. Farmer. Journal of Global Optimization,
vol. 56, no. 4, pp. 1791–1815, 2013.

Bayesian Numerical Analysis: Global Optimization and Other Applications
J. M. Fowkes. DPhil Thesis, Mathematical Institute,
University of Oxford, 2012.

Optimal Well Placement
C. L. Farmer, J. M. Fowkes and N. I. M. Gould. Proceedings of the 12th European Conference on the
Mathematics of Oil Recovery, 6–9th September 2010.
TASSAL
Treebased Autofolding Software Summarization ALgorithm
View on GitHub
TASSAL is a tool for the automatic summarization of source code using autofolding.
Autofolding automatically creates a summary of a source code file by folding nonessential code and comment blocks. A live demo
of TASSAL can be
found here along with
a video highlighting its main features.
This is an implementation of the code summarizer from our
autofolding paper.
IIM
Interesting Itemset Miner
View on GitHub
IIM is a novel algorithm that mines the itemsets that are most interesting under a probablistic model of transactions.
It is able to efficiently infer the interesting itemsets directly from the transaction database using structural EM.
This is an implementation of the itemset miner from our
probabilistic itemset mining paper.
ISM
Interesting Sequence Miner
View on GitHub
ISM is our follow up algorithm that mines the most interesting sequences under a probablistic model of sequences.
Like our previous algorithm, it efficiently infers the interesting sequences directly from the database (
see here for a short video overview).
This is an implementation of the sequence miner from our
probabilistic sequence mining paper.
PAM is a near parameterfree probabilistic algorithm for mining the most interesting API patterns from a list of API call sequences.
PAM largely avoids returning redundant and spurious sequences, unlike API mining approaches based on frequent pattern mining.
This is an implementation of the API miner from our
probabilistic API mining paper.
oBB
Overlapping Branch and Bound
View on GitHub
A general purpose parallel global optimization algorithm for surrogate functions arising in Bayesian optimization.
From
our paper
(and
follow up paper with improved bounds)
on the parallel global optimization of functions with Lipchitz continuous gradient or Hessian.
MAST
Machine Learning for the Analysis of Source Code Text
View on GitHub
A collection of useful tools and resources that leverage machine learning to aid source code developers.
See
the reading group for relevant papers of interest.
2013 – 2016
EPSRC Postdoctoral Research Associate, University of Edinburgh
Principal investigator:
Dr. C. Sutton, Grant: EP/K024043/1
Researched approximation algorithms for interesting pattern mining based on statistical models of the underlying data
as well as their applications to the analysis of program source code text.
2011 – 2013
EPSRC Postdoctoral Research Assistant, University of Edinburgh
Principal investigator:
Dr. C. Cartis, Grant: EP/I028854/1
Researched techniques for the global optimization of functions with Lipchitz
continuous gradient or Hessian. Implemented a parallel global optimization algorithm in Python on the ECDF Eddie cluster.
2007 – 2011
DPhil in Numerical Analysis, University of Oxford
DPhil supervisors:
Prof. N. I. M. Gould and Dr. C. L. Farmer
Conducted research on Bayesian approaches to global optimization using Gaussian processes and statistical decision theory.
This was an EPSRC Industrial CASE Award in conjunction with Schlumberger.
2003 – 2007
MMath (Hons) Mathematics, University of Bath
First Class Honours. (Courses on a variety of Pure and Applied Mathematics topics as well as areas of Physics and Computer Science.)
Awarded the SIAM UK prize for the best presentation by a PhD student at the 23rd Biennial Conference on Numerical Analysis, Glasgow.
Awarded the CCLRC Science Prize for Excellence in Science at the European School, Culham.