Validating AI-Generated Code with Live Programming

By: Kasra Ferdowsi*, Ruanqianqian (Lisa) Huang*, Michael B. James, Nadia Polikarpova, Sorin Lerner

Published in CHI, 2024

AI-powered programming assistants are increasingly gaining popularity, with GitHub Copilot alone used by over a million developers worldwide. These tools are far from perfect, however, producing code suggestions that may be incorrect in ... Read more

Exploratory Phenomena in Program Synthesis

By: Michael B. James

Published in PhD Dissertation, 2024

Program synthesizers promise to save time for the programmer by writing parts of their code for them, provided the programmer knows exactly what they want. For it to suggest that code, the programmer must convey the nuances of their spec... Read more

Grounded Copilot: How Programmers Interact with Code-Generating Models

By: Shraddha Barke*, Michael B. James*, Nadia Polikarpova

Published in OOPSLA 2023, 2023

Distinguished Paper Award

Powered by recent advances in code-generating models, AI assistants like Github Copilot promise to change the face of programming forever. But what is this new face of programming? We present the first grounded theory analysis of how pro... Read more

Program Recognition in Synthesis

By: Michael B. James, Nadia Polikarpova

Published in PLATEAU 2021, 2021

Program synthesizers can offer a user many candidate snippets to fit a specification. How should a user decide which snippet is the right one for them? We introduce the problem of program recognition in the context of program sy... Read more

Digging for Fold: Synthesis-Aided API Discovery for Haskell

By: Michael B. James, Zheng Guo, Ziteng Wang, Shivani Doshi, Hila Peleg, Ranjit Jhala, Nadia Polikarpova

Published in OOPSLA 20, 2020

We present Hoogle+, a web-based API discovery tool for Haskell. A Hoogle+ user can specify a programming task using either a type, a set of input-output tests, or both. Given a specification, the tool returns a list of matching programs ... Read more

Download here

Program Synthesis by Type-Guided Abstraction Refinement

By: Zheng Guo, Michael B. James, David Justo, Jiaxiao Zhou, Ziteng Wang, Ranjit Jhala, Nadia Polikarpova

Published in Principles of Programming Languages 2020, 2019

We consider the problem of type-directed component based synthesis where, given a set of (typed) components and a query type, the goal is to synthesize a term that inhabits the query. Classical approaches based on proof search in intuiti... Read more

Download here