Primary supervisor
Markus WagnerCo-supervisors
- Sandy Brownlee, University of Stirling
Genetic improvement (GI) of software is a family of techniques that can automatically improve code using evolutionary algorithms. The idea is to apply changes (swap lines/blocks, change + to -, etc.) to existing code until it is improved. This has been successfully deployed for automated bug fixing, speeding up existing programs, and making software more energy efficient, with impressive results.
Gin (https://github.com/gintool/gin) is an open source tool for GI in Java, and it has been used to support many researchers investigating GI. However, there are ***several*** aspects of Gin that need improved to support modern and large-scale software projects. Several aspects of Gin's integration with the Maven and Gradle build tools needs brought up to date including automatic generation of unit tests and configuration of the profiling tool. Gin's profiling tool was recently updated to support modern Java, but lost some functionality that needs reintroduced. Reporting of exceptions and errors in the software being improved is minimal, but could be added to help both users of Gin, and to provide feedback for Gin's large language model integration. A more ambitious project could also extend to allowing Gin to alter multiple class files at once, or extend the existing basic LLM integration. This project is a challenging combination of problem solving and working in a cutting edge research area.
Student cohort
URLs/references
The GIN tool: https://github.com/gintool/gin
The paper outlining GIN 2.0: https://www.acrocon.com/~wagner/pub/2019gecco-gintool.pdf
A paper on benchmarking: https://arxiv.org/abs/2007.03488
A 2020 tutorial on Genetic Improvement: https://geneticimprovementofsoftware.com/slides/PPSN2020_GItutorial.pdf
Required knowledge
Java
gradle/maven helpful