I’m an incoming assistant professor of computer science at UW–Madison in the madPL group, starting Fall 2025. Currently, I’m at MIT CSAIL working with Michael Carbin.
I’m looking for Ph.D. students! If you’re interested in programming languages or quantum computing, I encourage you to review my publications and apply to UW–Madison CS.
I welcome email from prospective students; please include details about your research interests and how we might work together.
Contact Email ude.csiw.sc@nauyselrahc or find me on GitHub or LinkedIn.
Research I study how to program a quantum computer to practically realize quantum algorithms. Quantum computers promise incredible speedups for tasks such as simulation, search, and optimization. However, achieving this speedup in practice forces us to fundamentally rethink the abstractions, such as data structures and control flow, that we use to write algorithms as programs. My research thus builds a new software stack of languages, libraries, and compilers to manipulate and reason about quantum information.
Biographical Here are my CV and Google Scholar. I’ve also previously worked at Google Quantum AI and at Hudson River Trading.
What limits how fast a program can run on a quantum computer that uses an error-correcting code as needed in practice? We show how the quantum version of an if
-statement can introduce an asymptotic slowdown that diminishes the speedup of an algorithm, and present an optimizing compiler that recovers efficient programs.
Can we program a quantum computer using the same abstractions for control flow, such as conditional branches and loops, as on a classical computer? We prove that the answer is no – this would destroy the speedup of the quantum algorithm – and present a new instruction set for correctly realizing control flow in quantum algorithms.
How do we implement a data structure, such as a list, set, or dictionary, on a quantum computer? We present a programming language for working with pointers stored in the states of qubits in superposition. Using it, we build a quantum library of data structures that developers can invoke to realize quantum algorithms that rely on them.
How do we reason about the impact of entanglement, or “spooky action at a distance,” on the correctness of a quantum program? We present a language and type system for a concept of purity that identifies unintuitive behavior caused by entangled quantum data, and illustrate how this system can catch bugs in quantum programs.