December 2018: I am now a full-time Research Scientist at Google Brain in Mountain View, CA. I maintain an affiliation at the University of Edinburgh, but I will not be able to take on additional students for September 2019.
There are lots of exciting research projects in my group. I am interested in statistical machine learning, probabilistic graphical models, approximate inference, and applications of machine learning, including applications to performance data from computer systems, to programming languages, and to natural language processing. I work in between theory and practice: I look for new applications of machine learning, especially in computer science and engineering, that push the boundaries of existing methodology and suggest new methods.
Here are some examples of areas in which I could accept students:
Using machine learning to make programming better: I'm very excited by the potential for applying machine learning and natural language processing ideas to computer programs. The idea is to find patterns in large corpora of open source software that characterize well written code that is easy to read. Another direction is to apply machine learning methods to program semantics, e.g., learning when the state of a program is unusual, e.g., in terms of values and variables etc. There are lots of interesting applications to program maintenance and debugging. To get a sense of the type of work that we do, here is a our papers in machine learning and software engineering.
Using machine learning to make machine learning better: Data analysis is a long process that includes data cleaning, visualizing, applying a machine learning method, evaluating the performance of an algorithm, and monitoring it over time. Most research in machine learning focuses only on the one step in the middle --- how to build a good model --- but the other steps are themselves ripe applications for machine learning methods. Interesting problems here include data cleaning and interactive machine learning.
Deep learning. Recently we have begun developing and applying new neural network models (see here for examples of papers related to neural networks). I think that there are a lot of interesting potential directions on new types of deep architectures for unsupervised learning.
Other applications of interest in our group include computer security, sustainable energy, natural language processing, and learning analytics.
I also welcome students to propose their own potential projects in my areas of interest. My supervising style is fairly flexible; I believe that it is important that we work together to tailor the project to match your interests.
If you'd like work with me as a PhD student, send me an email before you apply. Think about what kind of research you want to do and why you want to work with me. Please include a CV and a summary of your marks in relevant courses.
To get a sense of my research, read a few of my recent papers. Ask yourself if you'd like to write papers that look like those.
To apply, read the pages about how to apply for graduate study at the School of Informatics web site. Applications are accepted throughout the spring term, but for overseas students I would advise that you apply by December for entry the following September, because this will maximise your potential sources of funding. The official deadline is given at the link above.
You have three main options: a ``direct PhD'', the Centre for Doctoral Training (CDT) in Data Science, or the PhD programme in the Alan Turing Institute.
First, the Centre for Doctoral Training in Data Science is a 4 year PhD programme that includes a classroom component, so you can apply to the Centre directly from a bachelor's degree. Topics covered by the Centre include machine learning, databases, natural language processing, statistics and optimization, and other areas.
Second, the direct PhD is a 3 year programme with no coursework component. It is suitable if you already have experience in machine learning or natural language processing. Because the PhD is quite short, unless you already have a strong background in machine learning, I would encourage you to do an MSc first, in order to gain the necessary background before applying directly to the PhD. You could consider MSc programme in the School of Informatics, and in particular the Learning from Data specialism.
Third, the Alan Turing Institute is the UK's national research lab in data science. I am one of the possible supervisors for their PhD programme. If you took this route, you would be based in London, but with frequent trips to Edinburgh.
If you are an overseas student, you should be aware that funding is quite limited. If you are able to obtain a scholarship from your home country, that will help significantly. If you require funding from us, then you should apply either for the Edinburgh Global Scholarship or (if you are Chinese) for the China Scholarship Council Award. These require a separate application from your application for PhD entry. Both of these awards are very competitive, so you will need to be a top student to have a realistic chance of winning one. Please see this page for more information about scholarships for overseas students.
Finally, here is some great general advice for applying to graduate school in computer science. It is somewhat US-centric, although some of the same principles will apply over here as well.