david minh-duy cao


I am currently a first-year PhD student in the Computer Science program, advised by Prof. Sarah E. Chasins↗ as a part of PLAIT Lab↗.

My research seeks to offer concrete interventions at the intersection of computing and social justice. How can we build computing and programming tools that support marginalized communities' visions of self-determination, thriving, and joy?

Recent news

Past projects

babble: Learning Better Abstractions with E-Graphs and Anti-Unification

David Cao*, Rose Kunkel*, Chandrakana Nandi, Max Willsey, Zachary Tatlock, Nadia Polikarpova

Published at POPL 2023

Humans are really good at library learning: finding common patterns in code and extracting them into a library of common abstractions. This problem has a bunch of use cases across FPGA design, program synthesis, and modeling human perception. So how can we get a computer to do this?

Building off of prior work in library learning and e-graphs, we contribute new algorithms for proposing candidate abstractions and choosing the best set. We improve on the prior state-of-the-art in compression and speed by several orders of magnitude!

Type-Directed Program Synthesis for RESTful APIs

Zheng Guo, David Cao, Davin Tjong, Jean Yang, Cole Schlesinger, Nadia Polikarpova

Published at PLDI 2022

Interacting with REST APIs can often be extremely unwieldy; APIs can have hundreds of methods, and may or may not be documented. We propose a system that can synthesize programs that call into REST APIs.

Automated Dependent Resource Analysis

David Cao, advised by Tristan Knoth and Nadia Polikarpova

Submitted to POPL 2021 SRC (2nd Prize)

When programming, it's useful to know the resource use of a program (in undergrad we take whole courses on this!). We contribute a system that can automatically infer resource bounds that can depend on the inputs of a program.