Research Interests

I study programming languages and computer security. I have wide-ranging interests, and some of my most recent work touches on: Coq verification of LLVM program transformations and quantum circuits, type-directed program synthesis, linear types and verified web server implementations. I have also spent a lot of time thinking about language-based enforcement of information-flow policies, low-level code memory safety, understanding dynamic security policies, and authorization logic. I am interested in secure concurrent and distributed computing, functional programming languages, type theory, linear and modal logics, theorem proving and mechanized metatheory.


Current Projects and Activities

Penn’s programming languages research group, run jointly with Benjamin Pierce and Stephanie Weirich. We meet weekly with students and post-docs to discuss current research topics.

The verified LLVM project is developing semantics for the LLVM intermediate representation using the interactive theorem prover Rocq. The resulting tools let us create highly-reliable program transformation passes and optimizations.

Concurrent LLVM Equivalence Analysis through Refinement, in conjunction with Galois Inc., is part of the DARPA TRACTOR program, which aims to automate the translation of legacy C code to Rust.

Previous Projects and Activities

I served as General Chair for POPL 2025, held in Denver, Colorado.

The DeepSpec project focused on the specification and verification of full functional correctness of software and hardware, bringing Coq formalization to bear on systems-level programs such as compilers, operating systems, and databases.

The goal of this project was to devise novel methods for ensuring that quantum programs are correct, addressing the challenge that quantum algorithms explore alternative computation branches in superposition.

This NSF Expedition on Computer-Augmented Program Engineering sought to transform the way that programmers develop software by advancing the theory and practice of software synthesis.

This project developed software instrumentation techniques to achieve complete memory safety for C programs, while requiring minimal changes to the source programs.

This research sought to develop programming language abstractions and analyses that let developers create programs that are secure by construction.


Advising

Post Docs Advised

Ph.D. Students Advised

Masters Students Advised

Undergraduate Sr. Thesis / Sr. Projects Supervised

Undergraduate Summer Research Experiences Supervised


Teaching


Awards