Advisor: Zhendong Su and Sumit Gulwani Thesis: Program Generation for End-User Programming and Compiler Validation
An umbrella project whose goal is to improve the quality of all aspects of critical software, such as compilers and database engines. We introduce Equivalence Modulo Inputs, a novel methodology to generate valid tests from existing programs to find bugs in compiler optimizers [PLDI14a]. We are also developing techniques to find bugs in other important compiler components: link-time optimizers and warning infrastructures. In total, we have reported 300+ new bugs (majority are miscompilation) in GCC and LLVM, most of which have been confirmed and fixed by developers. We are currently working on finding correctness/performance bugs in database engines.
A project that combines various program synthesis techniques and tools (e.g., FlashExtract, FlashFill, and NLyze) to enable users to perform more sophisticated tasks that otherwise cannot be done using a single technique alone. For example, we enable editing by examples by using FlashExtract to highlight regions that need to be edited repetitively, and applying transformation tools such as FlashFill to transform these regions.
A practical symbolic execution system that was specifically designed for detecting floating-point exceptions [POPL13]. Ariadne has found 2,091 floating-point exceptions in the GNU Scientific Library (GSL).
Working on the FlashM project that combines multiple synthesis paradigms. Improving FlashExtract logics and ranking. Collaborating with other product groups in Microsoft to bring FlashExtract technology to more customers.
Worked with the PowerShell team to help transfer FlashExtract to PowerShell (shipped as part of the Microsoft Windows Management Framework 5.0 Preview).
Designed and developed FlashExtract, a general program synthesis framework that enables data extraction from semi-structured documents using examples (published in PLDI 2014).
Designed and developed a natural language front-end for TouchDevelop to synthesize TouchDevelop scripts from English keywords (integrated into TouchDevelop).