Talks and presentations

Grounded Copilot: How Programmers use Code-Generating Models

October 25, 2023

Talk, OOPSLA 2023, Cascais, Portugal

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

November 09, 2021

Talk, PLATEAU 2021, Carnegie Mellon University

Program synthesizers take some specification and produce one or more programs that likely implement it. However, there is a last-mile problem in this task, to actually determine if the output of the synthesizer accomplishes the input tas... Read more

Digging for Fold: Synthesis-Aided API Discovery for Haskell

November 15, 2020

Talk, OOPSLA 2020, Online

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

Interaction Modalities in Program Synthesis

July 23, 2020

Talk, UC San Diego, Department of Computer Science, San Diego, California

Program synthesis searches from a high level specification to find a program that matches a user’s intent. Interactive program synthesis considers the human an essential part of that search process. Providing interactions comes in largel... Read more

Synthesis from Partial Refinements

January 22, 2020

Talk, POPL 2020 Student Research Competition, New Orleans, LA

While program synthesis with refinement types as a specification is rather precise, it is not expressive enough for even some simple programs. However, synthesis with examples as a specification can be fatiguingly verbose, with some prog... Read more

Component-based Type-driven Synthesis

January 18, 2019

Talk, UC San Diego, Department of Computer Science, San Diego, California

I discussed Hoogle+, one of my research projects. It is a component-based type-driven synthesis technique for Haskell. Relying on a library of everyday functions and an input type query, the... Read more