Skip to main page content - your browser does not fully support our CSS, or is text-only.

PhD Studentship Topic

Genetic Programming in Search Based Software Engineering

I am interested in the general question of how we can get a computer to program itself which has long been a goal of Artificial Intelligence.

I am interested in the general question of how we can get a computer to program itself which has long been a goal of Artificial Intelligence.

Software engineering provides a unique material on which to perform optimization tasks as the optimization algorithms are themselves software. In other words, unlike other engineering disciplines where the materials have to be simulated, in software engineering the software is its own model. This presents the optimization and machine learning communities with a rich source of challenging real-world problems.

In particular, I am interested in how results from theoretical computer science can inform the largely empirical practice of software engineering (for example ideas and results from complexity and computability theory and Kolmogorov complexity), and how this can help us build dynamic algorithms which adapt online over their lifetime.

In the past Genetic Programming has traditionally taken the approach of evolving programs from scratch using a process inspired by natural selection. However recent techniques take existing programs as a starting point and try to improve them. These techniques include the following two approaches.

  1. Genetic Programming as a Hyper-heuristic, which can be interpreted as the Automatic Design of Algorithms (effectively in vivo), where part of an algorithm is human designed and part of the algorithm is designed by computer (Genetic Programming).
  2. Genetic Improvement operates directly on source code (effectively in situ), where small edits are made to source code using Evolutionary Computation.

In both cases the resultant is an executable program, which often has better performance than solely human designed code.

Currently algorithms are typically written by a human programmer - but in a few years many programs could be written automatically.

Particular areas of interest for PhD study include:

  • Search based software engineering; the application of machine learning and optimization techniques to the domain of software.
  • Genetic Programming, Genetic Improvement and Automated Programming; the practice of evolving programs, either from scratch or from existing software.
  • Optimization Machine Learning, and in particular Heuristics, Metaheuristics and Hyper-heuristics.

Further Details

Contact: Dr John Woodward

This page is maintained by:
Computing Science and Mathematics
Faculty of Natural Sciences
University of Stirling, Stirling FK9 4LA
Tel: +44 1786 46 7421

© University of Stirling FK9 4LA Scotland UK • Telephone +44 1786 473171 • Scottish Charity No SC011159
Portal Logon

Forgotten login?