Almost every aspect of our world has been touched by automation through software systems. Being able to efficiently construct complex software provides a competitive advantage to businesses, streamlines our bureaucratic systems, and improves our personal day-to-day lives. But building software remains a cumbersome, error-prone process. This project simplifies the software development process through techniques that automatically synthesize desired programs. At a foundational level, the project develops modern algorithmic techniques for efficiently and automatically constructing software systems, thus advancing the field of program synthesis. The particular emphasis of this project is on automated synthesis of data-analysis applications. Specifically, the project develops tools for end users to automatically construct data analyses that can run on cloud infrastructure, without any necessary knowledge of programming systems. Thus, the project has the potential to revolutionize and democratize data analytics. The project strongly connects research with education and outreach: by involving women and underrepresented minority undergraduate students in research, incorporating program synthesis ideas in modern curricula, and developing inclusive synthesis-themed hackathons.
This project expands the range of program synthesis applications to data-parallel programs that can run on cloud infrastructure. To enable efficient synthesis, the project contributes a portfolio of novel algorithmic techniques. Specifically, the project (1) develops and utilizes the notion of relational specifications to guide synthesis algorithms with semantic knowledge; (2) develops techniques for learning relational specifications of arbitrary APIs; and (3) develops a suite of techniques for efficiently synthesizing programs that are deterministic in the presence of reorderings.