Jonathan AldrichAssociate Professor
Director, Software Engineering Ph.D. program
co-Director, Software Engineering Minor
Address and Contact Information
poprocky at cs dot cmu dot edu
5125 Wean Hall
My research goal is to improve the quality of software and the productivity of engineers by providing novel ways to express and enforce structural and behavioral aspects of software design within source code, typically through language design and type systems. 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 2014, I am looking for undergraduate or master's students for the following two research projects:
- Customizable Typechecking for Language Extensions in Wyvern
- Foundations for Architecture-Based Distributed Systems
These are part of CMU's Research Experiences for Undergraduates in Software Engineering program.
- 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
Selected Publications (full list, curriculum vitae, talks)
- The Power of Interoperability: Why Objects Are Inevitable. Jonathan Aldrich. In Onward! Essays, 2013.
- A Type System for Borrowing Permissions. Karl Naden, Robert Bocchino, Kevin Bierhoff, Jonathan Aldrich. To appear in Proceedings of Principles of Programming Languages (POPL '12), 2012.
- First-Class State Change in Plaid. Joshua Sunshine, Karl Naden, Sven Stork, Jonathan Aldrich, and Éric Tanter. To appear in Proceedings of Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA '11), 2011.
- Gradual Typestate. Roger Wolff, Ronald Garcia, Éric Tanter, and Jonathan Aldrich. To appear in Proceedings of the European Conference on Object-Oriented Programming (ECOOP '11), 2011.
- An Empirical Study of Object Protocols in the Wild. Nels E. Beckman, Duri Kim, and Jonathan Aldrich. To appear in Proceedings of the European Conference on Object-Oriented Programming (ECOOP '11), 2011.
- Permission-Based Programming Languages (NIER Track). Jonathan Aldrich, Ronald Garcia, Mark Hahnenberg, Manuel Mohr, Karl Naden, Darpan Saini, Sven Stork, Joshua Sunshine, Éric Tanter, and Roger Wolff. In Proceedings of the International Conference on Software Engineering (ICSE '11), New Ideas and Emerging Results Track, 2011.
- Checking Concurrent Typestate with Access Permissions in Plural: A Retrospective. Kevin Bierhoff, Nels E. Beckman and Jonathan Aldrich. In Peri L. Tarr and Alexander L. Wolf, editors, Engineering of Software: The Continuing Contributions of Leon J. Osterweil, pages 35-48. Springer, 2011.
Upcoming Events and Organizations
- 2015 International Conference on Software Engineering (ICSE 2015), Program Committee (CFP)
- 2014 ECOOP External Review Committee
- 2013 SPLASH Tutorials Chair
- 2012 Foundations of Software Engineering (FSE-20), Workshop Chair
- 2012 Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'12), Program Committee
- 2012Brazilian Symposium on Programming Languages (SBLP'12), Program Committee
- 2012 International Conference on Aspect-Oriented Software Development (AOSD'12), Program Committee
- 2012 Types in Language Design and Impementation (TLDI'12), Program Committee
- 2012 International Conference on Objects, Models, Components, and Patterns (TOOLS Europe 2012), Program Committee
- 2011 European Conference on Object-Oriented Programming (ECOOP'11), Program Committee
- SPLASH 2011 Doctoral Symposium chair
- 2011 International Workshops on Foundations of Object-Oriented Languages (FOOL '11), General Chair and Steering Committee Chair
- 2011 International Workshop on the Foundations of Coordination Languages and Software Architectures (FOCLASA 2011), Program Committee
- Journal of Object Technology, Editorial Board
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.