I focus on tools and techniques for building reliable and efficient software. My interests include:
Concurrency: Tools and techniques to test concurrent software. Check out thread-safe.org for an automatic and precise thread safety checker that has found bugs in the JDK. (PLDI'17, ISSTA'14, ASE'13, PLDI'12, ICSE'12)
Dynamic analysis driven by generated tests: Dynamic analysis is powerful but inherently bounded by the input that drives the execution of a program. We leverage automatic test generation as a driver for dynamic analyses that find bugs. (OOPSLA'14, ICSE'13, ICSE'12)
Performance profiling and analysis: Traditional profilers show where resources are spend but not where resources are wasted. We develop analyses that pinpoint specific optimization opportunities to help developers speed up their programs. (ISSTA'16, ICSE'16, OOPSLA'15, FSE'15, OOPSLA'14, ISSTA'14)
API protocol mining and checking: Most APIs impose constraints on how to call their methods, but almost no API specifies these constraints formally. API protocol mining infers specifications that are useful to detect incorrect API usages. (ICSE'12, ICSE'12, ICSM'10, ASE'09)
I'm an assistant professor at TU Darmstadt, where I'm heading the Software Lab. Previously, I was a postdoctoral researcher at the University of California, Berkeley, where I worked with Koushik Sen and George Necula, and a lecturer and postdoctoral researcher at ETH Zurich, where I did my Ph.D. in the group of Thomas Gross. My Ph.D. thesis explores program analyses for automatic and precise error detection. I have studied computer science at TU Dresden and engineering at Ecole Centrale Paris. For writing my diploma thesis I visited the group of Martin Odersky at EPFL in Lausanne. I have received the Software Engineering Award of the Ernst-Denert-Foundation for the best dissertation and the Emmy Noether grant (1.3 million Euro) by the DFG.