Education
PhD, Computer Science
BS, Computer Science
BS, Molecular & Cellular Biology
Teaching
Advising
PhD Students
Masters and Undergraduates
There are 35+ masters and undergraduate reseachers in FP Lab — see the FP Lab webpage!Former Advisees
FP Lab alum include 1 Assistant Professor (Michael D. Adams), 10 PhD students, and 100+ students who went on to MS programs or industry!Service
Hazel: Live Functional Programming with Typed Holes
Hazel is a new kind of live programming environment that can reason about and run incomplete programs, i.e. programs with holes of various forms. The following publications develop the semantic foundations for hole-driven development.
Tylr: Eliminating Parse Errors with Holes
Parse errors are a pain for beginners and experts alike. The Tylr project eliminates parse errors (!) by automatically tracking syntactic obligations and materializing them as holes and other affordances. This benefits both humans and downstream tooling.
Grove: New Foundations for Collaborative Editing
We are developing a new semantics for collaborative editing that dispenses with diff-and-merge in favor of a commutative structure edit language. This resolves a number of problems, particularly related to relocation conflicts, and opens up new design avenues for a computational commons.
Conditionally
Hazel Assistant: Integrative Foundations for Intelligent Programming Assistants
We are developing an intelligent programming assistant that synthesizes code satisfying specifications provided by human programmers in the form of types, tests, properties, and sketches, and guided by a learned understanding of idiomatic code (increasingly using large language models).
Livelits: Filling Typed Holes with Live GUIs
We are working on integrating graphical and programmatic modes of interaction by developing language mechanisms that allow you to define type-specific user interfaces that generate code underneath, i.e. they serve as interactive graphical literal notation.
Hazel Tutor: Semantically Grounded Educational Technology
We are developing educational technology grounded in the semantic foundations of typed hole-driven development.
RustViz: Interactively Visualizing Ownership and Borrowing
The Rust programming language achieves memory and thread safety using a static ownership and borrowing analysis. This has led to explosive adoption, but learning Rust remains challenging. We are developing RustViz, a system that makes learning Rust easier by visualizing the invisible static state changes that occur within Rust code.
Read our RustViz-based quick introduction to Rust!
Capability Safe Programming Languages
We argue for concise formal architecture descriptions which are responsible for specifying constraints and passing a minimal set of capabilities to downstream system components, or explicitly entrusting them to individuals playing defined roles within a team. We are now starting to think about applying these ideas to agentic AI safety.
Relit: Reasonably Programmable Literal Notation
My thesis research developed mechanisms that allow library providers to express new type-specific literal notation (e.g. SQL literals) while ensuring that client programmers can still reason abstractly and compositionally about types and binding.
Relit implements the mechanism from the ICFP 2018 paper into Reason, which is Facebook's new front-end for OCaml. The Wyvern programming language implements the mechanism from the ECOOP 2014 paper.
typy: Programmable Semantic Fragments
typy allows library providers to install new statically typed semantic fragments into Python, while leaving its syntax alone (which cleverly sidesteps the "expression problem"). We have applied typy to problems in web security and data science.
SciUnit: Collaborative Infrastructure for Test-Driven Scientific Model Validation
One of the pillars of the scientific method is model validation: comparing a scientific model’s predictions against empirical data. The SciUnit project casts this as a form of collaborative software testing and develops useful infrastructure.
NIER Track
Neurobiological Circuit Dynamics
I entered grad school as a computational neurobiologist. I was interested in how biological circuits process information, so I developed a model of how the excitatory-inhibitory circuitry in the rodent whisker barrel cortex responds to stimulation.
Information Theoretic Foundations for Brain-Computer Interfaces
We built a provably optimal EEG-based brain-computer interface by studying the information theoretic properties of noisy asymmetric channels and developing statistical models of user intent for various types of communication/control tasks.
BCI Issue