Loading…
Loading grant details…
| Funder | National Science Foundation (US) |
|---|---|
| Recipient Organization | University of California-San Diego |
| Country | United States |
| Start Date | Sep 01, 2021 |
| End Date | Aug 31, 2025 |
| Duration | 1,460 days |
| Number of Grantees | 2 |
| Roles | Principal Investigator; Co-Principal Investigator |
| Data Source | National Science Foundation (US) |
| Grant ID | 2107397 |
The goal of Program Synthesis is to automate the process of software development, helping to build software faster, cheaper, and with fewer errors. Despite many recent research advances in this area, there is limited to no use of synthesis in mainstream software development. The reason is that prior research in this area has mainly focused on the algorithms that power program synthesizers, and have devoted much less attention to the interaction between a synthesizer and a human programmer.
This project investigates the human-facing side of Program Synthesis, with the goal of making synthesizers more usable by programmers and integrating these tools better into software-development workflows. By transforming the way in which programmers write code, this project has the potential to make software better at a lower cost.
The project explores three broad research arcs at the intersection of Program Synthesis and Human-Computer Interaction. (1) Communicating Intent: How should the programmer provide input to the synthesizer? (2) Comprehending Synthesized Code: How should the programmer understand the output of the synthesizer? (3) Tightly Integrated Synthesis Workflow: How should we tightly integrate synthesis into the programmer's workflow? More specifically, the investigators tackle the following research challenges: (1) understanding how synthesis techniques can take advantage of multiples kinds of specifications; (2) developing novel synthesis techniques that can work in the face of incomplete or incorrect specifications; (3) guiding synthesis techniques to take into account human-oriented considerations, such as understandability of the code, or predictability of the tool; (4) personalize synthesis approaches to the preferences of the programmer, to make the tools more usable and the results more understandable to the individual programmer; (5) adapting traditional programming workflows to make them more amenable to synthesis; (6) making it easier for the programmer to decide, given a task, if they should use synthesis or just write the code directly.
All new techniques developed in this project are incorporated into an online development environment Snippy, which is freely available on the web. To evaluate Snippy, the investigators conduct controlled A-B experiments with programmers, testing whether Snippy helps them solve typical programming tasks.
This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.
University of California-San Diego
Complete our application form to express your interest and we'll guide you through the process.
Apply for This Grant