picture of Jonathan Aldrich

Jonathan Aldrich

Director, Software Engineering Ph.D. program
Institute for Software Research
School of Computer Science
Carnegie Mellon University

Office: 4216 Wean Hall

Contact Information

+1-412-268-7278 (phone)
+1-412-268-2338 (fax)
personal contact info and cell phone (CMU only)

ORCID iD 0000-0003-0631-5591

Shipping Address

Jonathan Aldrich
CMU - ISR - Wean Hall 5216
5000 Forbes Avenue
Pittsburgh, PA 15213-3891

Executive Assistant

Victoria Poprocky
poprocky at cs dot cmu dot edu
Victoria's office is 5125 Wean Hall


I work at the intersection of programming languages and software engineering. My research explores how the way we express software affects our ability to engineer software at scale. A particular theme of much of my work is improving software quality and programmer productivity through better ways to express structural and behavioral aspects of software design within source code.

I have contributed to object-oriented typestate verification, modular reasoning techniques for aspects and stateful programs, and new object-oriented language models. For my work specifying and verifying architecture, I received a 2006 NSF CAREER award and the 2007 Dahl-Nygaard Junior Prize (press release, article). Right now I'm excited to be working on the design of Wyvern, a new modularly extensible programming language.

New Students Wanted!

For Summer 2016, I am looking for undergraduate or master's students for the following two research projects:

These are part of CMU's Research Experiences for Undergraduates in Software Engineering program.

Also see information for prospective Ph.D. students and advice for current students.


  • Wyvern - A general-purpose language focused on security, modularity, and language extensibility.
  • Plaid - A typestate-oriented, gradually typed programming language
  • AEminium - A concurrent-by-default programming language, implemented as an extension to Plaid
  • Object-Oriented Foundations - New models for object-oriented languages
  • Typestate - Verifying component and library usage constraints (Plural tool)
  • Separation Logic - Modular verification of higher-order, typed programs
  • Ownership and Architecture - Capturing the high-level structure of object graphs
  • ArchJava (no longer active) - Enforcing run-time software architecture within object-oriented code
  • SASyLF - An educational proof assistant for language and logic metatheory
  • Crystal - A Eclipse-based framework for teaching dataflow analysis


All papers

Curriculum Vitae (html, PDF)

Selected talks

Upcoming Events and Organizations


In August 2003, I started teaching at Carnegie Mellon University. Before that, I was a graduate student in Computer Science and Engineering at the University of Washington, working with Craig Chambers and David Notkin.

My wife Becky Billock and I enjoy hiking, backpacking, and mountain climbing, and playing music together. We were married in 2000 and have two beautiful daughters, Sierra and Evelyn.