Loading…
Loading grant details…
| Funder | National Science Foundation (US) |
|---|---|
| Recipient Organization | University of Washington |
| Country | United States |
| Start Date | Oct 01, 2021 |
| End Date | Sep 30, 2026 |
| Duration | 1,825 days |
| Number of Grantees | 2 |
| Roles | Principal Investigator; Co-Principal Investigator |
| Data Source | National Science Foundation (US) |
| Grant ID | 2122950 |
End users of software such as spreadsheets and other data-analysis tools often want to solve problems that go beyond the features built into those tools. Such users face a "programmability gap": to solve their problem, they need to write a program, but they lack the multi-faceted expertise necessary to design an algorithm and implement it in a particular programming language.
This project is about flattening the steep learning curve of programming by developing tools that assist people in writing programs. The interaction between the tools and users will revolve around programming by demonstration, where the user provides examples of what the program should do when it sees a particular input and the tool generalizes this demonstration into a working program.
The project will extend programming by demonstration into a bidirectional communication between the user and the tool. First, the tool will explain the synthesized program to the user, freeing the user from having to learn a new programming language. Second, when the tool incorrectly generalizes the user's demonstration, the tool will ask the user questions to produce a correct program.
Finally, the tool will help teachers author so-called microworlds of programming exercises for novice users. The team brings together expertise in programming languages and human-computer interaction to develop both the underlying synthesis techniques and effective interfaces for people to use them, focusing on the domains of data visualization and creative AI programming.
By developing new end-user interaction models and end-user programming tools, the project aims to increase people's ability to solve problems and potentially broadening participation in computing to include those who previously viewed programming as inaccessible.
The work is framed around fundamental challenges of enabling iterative exploration with code when the specification is not known a priori. The proposed work targets these open challenges directly, envisioning ways for synthesis to enable more flexible, iterative, and exploratory workflows. To do this, this project will first develop a foundation for interactive synthesis as an extension to solver-aided programming techniques that have enabled automatic construction of verifiers and synthesizers.
The foundation will include a small set of primitive queries on top of which one can implement common interactive tasks such as computing alternative explanations of a synthesized program. Next, leveraging the recent results in synthesis of language constructs, the researchers will develop methods for synthesis of programming primitives that are explainable in a given domain, are sufficiently powerful, and gradually teachable.
These techniques will be evaluated in the context of existing tools the team has developed to support data analysis and creative programming.
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 Washington
Complete our application form to express your interest and we'll guide you through the process.
Apply for This Grant