About

We research how to use computers to support complex cognitive tasks: programming, verification, communication, learning, and more.

We apply theories of human cognitive capabilities and limitations to understand how computers can best provide cognitive support. The interdisciplinary nature of this work is reflected in the term cognitive engineering.

Our backgrounds are primarily as computer scientists, programming language theorists, and software engineers. At CEL, we build practical systems that are used by hundreds of thousands of people around the world. We look for students who are talented programmers that care deeply about the human factors of their work.

Publications

A Design Space Exploration of Async/Await
Gavin GrayShriram KrishnamurthiWill Crichton.
OOPSLA 2026. DOIarXivArtifact
An Interactive Debugger for Rust Trait Errors
Gavin GrayWill CrichtonShriram Krishnamurthi.
PLDI 2025. Featured in the MIT PL Review. DOIarXivGithubArtifact
A Core Calculus for Documents
Will CrichtonShriram Krishnamurthi.
Profiling Programming Language Learning
Will CrichtonShriram Krishnamurthi.
OOPSLA 2024. Distinguished Paper. DOIarXivProject PageArtifact
A Grounded Conceptual Model for Ownership Types in Rust
Will CrichtonGavin GrayShriram Krishnamurthi.
OOPSLA 2023. SIGPLAN Research Highlight and Communications of the ACM Research Highlight. DOIarXivProject PageVideoGithubArtifact
Modular Information Flow through Ownership
Will CrichtonMarco PatrignaniManeesh AgrawalaPat Hanrahan.
The Role of Working Memory in Program Tracing
Will CrichtonManeesh AgrawalaPat Hanrahan.
CHI 2021. Featured in the MIT PL Review. DOIarXivVideo