I’m an assistant professor of computer science at UW–Madison, where I am a member of the madPL and quantum computing groups.
I’m looking for Ph.D. students! If you’re interested in programming languages or quantum computing, I encourage you to read my work, learn about Madison, and apply.
Contact Email ude.csiw.sc@nauyselrahc or find me in Morgridge 7663.
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.
Teaching I teach a graduate seminar on programming quantum computers this fall.
Service I am on the PC for PLDI 2026 and PLanQC 2026 and ERC for ASPLOS 2026.
Biographical Here are my CV and Google Scholar. I completed my Ph.D. at MIT CSAIL with Michael Carbin. I’ve worked at Google Quantum AI and 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.