|Title||Explaining neural bug detectors with minimal working examples|
Neural bug detectors  are complicated neural networks trained to detect (and sometimes repair) simple bugs in code. While existing approaches become increasingly effective at this task, they often suffer from a high number of false alarms (i.e. they find a bug in a correct code snippet).
For a developer it is often difficult to decide whether something is a real bug or a false alarm: Code is often convoluted with functionality not related to the bug and the bug detectors provide no information other than the bug location itself (and a repair).
In this work, we aim to support the developer in its decision process by utilizing a common bug reporting strategy called Minimal Working Example (MWE). A MWE is the smallest code snippet that:
1. is still exercisable and
2. can not be further reduced without sacrificing the exercisability and
3. still triggers the reported bug.
In the context of neural bug detection, a bug is usually not triggered. Therefore, we require instead that the neural bug detector identifies the same bug on the reduced code snippet.
|Home institution||Department of Computing Science|
|Type of work||practical / application-focused|
|Type of thesis||Master's degree|
In this master thesis, your goal is to develop an algorithm for automatically deriving a MWE for a bug detected by a neural bug detector. For this, you will employ a variant of Delta Debugging  to reduce the program to its core. The challenge of this master thesis is to design a function that checks whether something is an MWE usable in the context of Delta Debugging.
The developed technique should be evaluated either:
1. in form of a survey (to test whether developers prefer the derived MWE) or
2. as a strategy for automatically detecting false alarms.
Which form of evaluation is chosen can be decided by the applicant.
 Richter, Cedric, and Heike Wehrheim. "Can we learn from developer mistakes? Learning to localize and repair real bugs from real bug fixes."
 Sun, Chengnian, et al. "Perses: Syntax-guided program reduction."
Die Implementierung der entwickelnde Technik findet größtenteils in Python statt. Da einige der genutzten Libraries auch in Java entwickelt, wäre Erfahrung in Java von Vorteil. Auch erste Erfahrung mit Neural Networks und deren Evaluierung wären vorteilhaft.