Colloquium - Adventures in Program Repair

Location: 
110 MLH
Speaker: 
Loris D'Antoni
University of Wisconsin-Madison | MadPL Group


Programmers constantly face errors that are confusing and hard to fix. In particular, inexperienced programmers, who cannot address commonly occurring errors, have to resort to online help-forums for finding corrections to their buggy programs.
I will present three ideas that leverage advances in program synthesis to automatically assist unskilled programmers that face commonly occurring errors.

First, I will talk about "emulative program repair", a technique for automatically learning how to fix errors directly from programmers. Given examples of bug fixes from real programmers, we synthesize "rules" that generalize such bug fixes and use them to automatically repair programs that contains similar bugs.
Second, I will talk about "repair via direct manipulation", a technique that allows the programmer to express what a repaired program should do by directly manipulating intermediate runtime values of a program. Using the manipulated values, we automatically synthesize programs compliant with the user intent.
Third, I will talk about "program repair under uncertainty", where program inputs are drawn from a probability distribution. I will show how program that do not satisfy a given probabilistic postcondition can be efficiently repaired by combining techniques from program synthesis and computational learning theory.

Bio:

Loris D'Antoni is an Assistant Professor in the MadPL (Madison Programming Languages and Software Engineering) Group at the University of Wisconsin-Madison. He received his PhD from the University of Pennsylvania in 2015, where he worked under the supervision of Rajeev Alur. His dissertation "Programming using Automata and Transducers" won the The Morris and Dorothy Rubinoff Award. Loris's research interests lie in formal methods and program synthesis, with applications to networking, personalized education, and data science. Loris is currently investigating how formal methods can be used to provide personalized feedback to computer science students, automatically program networks, and remove bias from machine learning classifiers.