GGGP: Grow and Graft Genetic Programming

Principal Investigator Prof. Mark Harman, CREST, UCL
Named Researcher Prof. William B. Langdon, CREST, UCL
Academic Collaborators
Darrell Whitley, Colorado State University
Wes Weimer, University of Michigan
Industrial Collaborators
Visa, UK.
Microsoft: Redmond, Cambridge
Public Understanding Consultant Sue Black OBE Woohoo!!! Massive congrats to @Mark_Harman and #CREST</a> team for winning GOLD + BRONZE awards @GECCO2016 :)
epsrclogo EPSRC Grant Ref: EP/M025853/1
Software is not fragile
GGGP logo
65% of random mutations run and produce answers as good as the original code. 33% are worse (a tiny fraction, here 2.5%, are better).

What is Grow and Graft Genetic Programming (GGGP)?

Programming is hard. Adding new functionality to an existing, large, and perhaps poorly-understood system is a challenge, even for the most competent human programmer. Despite much progress in software development environments, programming still includes many human activities that are dull, unproductive and tedious.

The GGGP project is motivated by the frustration often expressed as questions such as "Why do software engineers spend so long repeatedly performing the same tedious low level software development tasks?" and "How many times do programmers work out how to express the idea of null pointer checking in a particular context or adapt existing code for searching an iterated data structure?"

We want to find a radically new approach to software development, supported by automated search that, we believe, will yield a dramatic reduction in development time. We propose a new approach to software development: Grow and Graft Genetic Programming (GGGP), in which a new feature is grown (using genetic programming) and subsequently grafted into an existing system. This grow and graft development approach aims to reduce the amount of tedious effort required by human programmer in order to develop and add new functionality into an existing system.

Our initial proof of concept work found that surprisingly little human guidance and domain knowledge is required from the programmer to guide Grow and Graft Genetic Programming. We therefore believe that it can radically change programming, making it faster and less error prone, with a consequent transformative effect on the software industry. We also believe it may make it more enjoyable to a wider range of people, with potentially transformative impact on the wider public involvement in (and understanding of) software development. Our approach can be best understood in the context of the recent trend in Search Based Software Engineering (SBSE) called "genetic improvement", which uses existing code as "genetic material" that helps to automatically improve existing software systems, which has achieved several recent notable breakthroughs, such as speed ups of 7 to 70 times on real-world systems, human competitive results in optimising constraint solvers, and automated bug fixing and repair work on existing systems.

The Problem Addressed by GGGP?

To achieve its aims, the GGGP project will:
  1. Develop a theory of Grow and Graft Genetic Improvement (GGGP).
  2. Develop new method and algorithms for growing and grafting code into existing software systems.
  3. Quantitatively evaluate the project's algorithms and methods, using examples from the industrial partners, benchmarks and specially constructed demanding examples.

Presentations

Publications

To avoid duplications publications are in my home pages for 2016 to 2018 upwards

Free Code

Datasets


W.B.Langdon 21 Jan 2016 (last update 22 September 2018).