What is Genetic Improvement?

Genetic Improvement is the application of evolutionary and search-based optimisation methods to the improvement of existing software. For example, it may be used to automate the process of bug-fixing or execution time optimisation.

What is a GI Workshop?

As academics in the field, we run the workshop to offer an opportunity for researchers to disseminate work, but most importantly to meet and discuss with other GI researchers. So far we had 5 editions of the workshop, four co-located with GECCO (in 2015, 2016, 2017 and 2018) and one with ICSE 2018. Since 2009 there have been four human competitive awards for work in GI (two Gold, one Silver and one Bronze) presented at GECCO and three best papers, including at the International Conference on Software Engineering and International Symposium on Software Testing and Analysis.

How can I find out more?

Check out this blog article about GI on the IEEE Software Blog, see recent survey, GI special issue, Open PhD tutorial In June 2016 there was a talk on GI at the International Summer School on Software Engineering, given by Professor Mark Harman (UCL), one of the foremost experts on GI and an international leader in search-based software engineering. In January 2016 there was a CREST Open Workshop at UCL on Genetic Improvement. Full details of the talks and speakers are available. A second workshop took place in January 2017, a 3rd will be in Feb 2018 There will be a Dagstuhl Seminar on GI at the end of January 2018. Details of the first edition of this workshop, GI 2015, can be found at http://geneticimprovement2015.com/ Proceedings of GI 2015 can be found in GECCO'15 Companion. Proceedings of GI 2016 can be found in GECCO'16 Companion. Proceedings of GI 2017 can be found in GECCO'17 Companion. Also, try Wikipedia.

What are some examples of GI Frameworks?

Gin: GI in No Time - a Simple Microframework for Genetic Improvement "The goal of Gin is to stimulate development in GI tooling, and to lower the barrier to experimenting with GI and related ideas such as program fragility. GrammaTech released extensive tooling for the programmatic modification and evaluation of software; focused on modifying C/C++ source, assembly, and ELF files: link; and C/C++ manipulation tooling: link. An excellent overview of automated software repair tools is given by Martin Monperrus. Here are a few other examples of existing work: Other frameworks and libraries identified at the Dagstuhl Seminar on Genetic Improvement of Software held in January 2018: MuScalpel: automated software transplantation DSpot: a tool for Genetic Improvement of test suites PyGGI: Python General Framework for GI ARJA: multi-objective automated program repair Reproduce and repair failing builds Astor4Android: program repair for Android Apps

Can you suggest good GI Benchmarks?

Benchmarks identified at the Dagstuhl Seminar on Genetic Improvement of Software held in January 2018:

Parsec: http://parsec.cs.princeton.edu/

SPEC INT: https://www.spec.org/benchmarks.html

GI-improved test subjects with test cases:

http://www0.cs.ucl.ac.uk/staff/ucacbbl/gismo/ (see Free Code heading)

http://www.cs.ucl.ac.uk/staff/W.Langdon/gggp/#code (see Free Code heading)

http://crest.cs.ucl.ac.uk/autotransplantation/downloads/artifact.html

(several frameworks also come with benchmarks, please see GI frameworks above)

Automated program repair, bug repositories:

http://repairbenchmarks.cs.umass.edu/

http://program-repair.org/benchmarks.html

http://groups.csail.mit.edu/pac/patchgen/