Abstract: Complex APIs in modern frameworks have imposed steep learning curves on everyone, especially for people with limited programming backgrounds. For instance, due to the messy nature of data in different application domains, data scientists spend close to 80% of their time in data wrangling tasks. Similarly, software engineers also spend hours or even days learning how to use APIs through official documentation or examples from online forums.
Program synthesis is a well-known technique to automate complex APIs usage. However, the biggest barrier to a practical synthesizer is the size of search space that a synthesizer has to explore, which increases strikingly fast with the complexity of the programs and the number of building blocks (i.e., methods of an API).
To address this issue, I will first present Morpheus, a novel component-based synthesizer for data scientists to automate a large class of data wrangling tasks. Second, a common weakness of mainstream synthesizers is that they cannot learn from their mistakes. Based on this intuition, I will talk about Neo, a new conflict-driven program synthesizer that generalizes the previous approach and is capable of learning from past mistakes. Our experimental results show that Neo outperforms two state-of-the-art domain-specific synthesizers in PL (i.e., Morpheus) and machine learning (i.e., DeepCoder) communities.
Bio: Yu Feng is a Ph.D. candidate in computer science at UT Austin. His research to date focuses on developing automated programming techniques that combine program synthesis and program analysis to improve software usability, reliability, and security. For instance, Yu has developed systems for tackling security vulnerabilities (FSE'14, NDSS'17, CCS'17), automating complex programming tasks (PLDI'17, POPL'17, PLDI'18), and challenging the limits of existing program analysis (OOPSLA'15, APLAS'15).