Here we list our research efforts by subject, linked to the section in the publication page that further links to the materials (code, slides, etc.) associated with each project. If you can’t find something or think we’ve forgotten anything, please contact us directly or file an issue with this page at

Program Repair


SearchRepair extends and uses semantic code search over large repositories of candidate code bases to produce high-quality bug patches.

Related Publications:


GenProg combines stochastic search methods like genetic programming with lightweight program analyses to find patches for real bugs in extant software. The GenProg website covers most GenProg-related research, with links to the various GitHub repositories, results, and reproduction instructions.

Related Publications:

Benchmarks and Tools for Empirical Evaluations

Many of our projects involve running analyses or tools on real code, often containing bugs. We therefore have several datasets, benchmarks, and pieces of infrastructure to support reproducible experiments, including:


RepairBox is an ongoing effort to provide a series of controlled environments for performing experiments on buggy C programs, particularly for program repair; it supports a number of bug scenarios from existing datasets, including ManyBugs. We are especially working to transition as many of the ManyBugs scenarios as possible to be reproducible in modern environments (no more relying on Fedora 13!), primarily through the use of Docker.

ManyBugs and IntroClass

ManyBugs and IntroClass are benchmarks intended to support evaluations of program repair research. More info at the repairbenchmarks site.

Related Publications:

Repository Mining

The projects in this category deal with mining the history of a large number of popular repositories to increase the quality of different attributes desired by developers, such as understanding bug repairs or maximizing code contribution quality.

Related Publications:

Self-adaptive Systems

The environment in which software systems run are constantly changing. The maintenance efforts on these systems would be significantly reduced if software was able to automatically adapt to its environment.

Related Publications:

Java Sandbox

We have investigated the challenges of using the Java Sandbox in an application. This work motivates possible improvements to the Java Sandbox and discusses the architectural constraint the Java Sandbox is used to enforce in practice.

Related Publications: