Research

A single principle runs through our work: modular reasoning, the ability to understand and change one part of a system without grappling with the whole. We design the languages and interfaces that make modular reasoning possible, and we reframe software-analysis tasks so that this reasoning scales to millions of programs. Today the principle matters most for AI-enabled systems: we decompose learned models into modules and bring software-engineering rigor to the AI that society increasingly depends on, so it can be built, debugged, and trusted.

View our work on Google Scholar →

Modularity and Modular Reasoning

We design languages, interfaces, and contracts that let engineers reason about complex software one module at a time, from aspect-oriented design and Classpects to Ptolemy's quantified typed events, capsule-oriented Panini, and translucid contracts for modular verification.

Projects

  • Panini: capsule-oriented programming for modular reasoning about concurrency.
  • Ptolemy: an event-based language with quantified, typed events and translucid contracts.
  • Eos: an aspect-oriented extension for C# that unifies aspects and objects as classpects.
  • Nu: intermediate-language and virtual-machine support for aspect-oriented features.
  • Sapha: automatic thread-to-core assignment for heterogeneous multi-core processors.
  • Slede: specification and verification of cryptographic protocols for sensor networks.
  • Tisa: trustworthy non-functional guarantees for service-oriented architectures.
  • Frances: teaching tools for code generation and computer architecture.

Representative and recent publications

More publications

Selected funding

Software at Scale, with Boa

The hard question behind Boa was not simply how to store hundreds of thousands of repositories, but how to express software-analysis tasks modularly so they can be decomposed and run across a massive collection of programs. Boa is the language and infrastructure that answers it, and the result is large-scale empirical software engineering the whole community can use.

Projects

  • Boa: a language and infrastructure that expresses software-analysis tasks modularly so they run across hundreds of thousands of open-source projects.

Representative and recent publications

More publications

Selected funding

Modular and Dependable AI

Modular reasoning extended to AI-enabled systems. We decompose learned models such as deep neural networks into reusable, replaceable modules, and we make AI software dependable through the first comprehensive study of deep-learning bugs, fault localization and repair for neural networks, and fairness across machine-learning pipelines.

Projects

Representative and recent publications

More publications

Selected funding

The bridge: modular deep learning, decomposing trained networks into modules that can be reused and replaced, carries modular reasoning directly from classical software into AI-enabled systems.

Recognition

Editorial roles