- Main
Human-Centered Program Synthesis
- Ferdowsifard, Kasra
- Advisor(s): Lerner, Sorin;
- Polikarpova, Nadia
Abstract
The intelligent programming assistant, directly integrated into the programmer’s workflow, has been a long time dream of programmers and researchers alike. Before the advent of Large Language Models (LLMs), this dream came closest to reality with Program Synthesis in the form of Programming-by-Example, and now tools such as GitHub Copilot have brought a version of it using LLMs to consumers. Alongside the technical developments in Program Synthesis and LLMs that made these tools possible, another area of research has focused on the usability of such tools, investigating user interfaces and interaction models that could most effectively employ these techniques to the benefit of programmers.
This dissertation explores the overlap between these research areas, focusing on synchronous program synthesis where the user is in-the-loop, specifying synthesis problems and waiting on the result. It includes human-centered contributions to each step the synthesis process, exploring the use of Live Programming to improve specification in Programming-by-Example in SnipPy and LooPy , an algorithmic contribution to bottom-up enumerative synthesis with side effects in SObEq, and exploring interfaces for validation of AI-generated programs for experienced developers in LEAP, and end user programmers in ColDeco.
Main Content
Enter the password to open this PDF file:
-
-
-
-
-
-
-
-
-
-
-
-
-
-