Designing programming languages, abstractions, and tools for the quantum future.
Quantum computing requires awareness of complex phenomena such as superposition, entanglement, and nondeterminism. We aim to develop programming abstractions to effectively implement quantum algorithms, simulations, and communication protocols that allow the developer to intuitively reason about these phenomena.
For example, we developed Twist, a new quantum programming language that enables the developer to soundly reason about entanglement using a new semantic property we developed called purity. We also developed Tower, a programming framework for implementing data structures on quantum computers.