CMU REU-SE: Faculty
CMU's software engineering faculty include co-founders of the fields of software architecture and empirical software engineering, as well as leading researchers in other subcommunities including automated program repair, product line systems, requirements engineering, object-oriented programming languages, natural programming tools, and program analysis. Recent awards won by CMU researchers include: 5 ICSE most influential paper awards; 4 ICSE and 2 RE distinguished papers; and the Dahl-Nygaard Junior Prize.
But what makes CMU really great is our students, many of whom took the lead in the research that led to the awards mentioned above--that's why we want you to come here!
Some of the faculty you may work with include:
Jonathan Aldrich does research on programming language and type system design, and empirical studies of programming languages. With his students, Jonathan recently developed Plaid, a programming language in which objects can change their interface, representation, and behavior via a novel state transition language construct.
Travis Breaux conducts research in requirements engineering, which aims to translate often ambiguous and conflicting user needs into executable software specifications through the use of natural language semantic analysis and formal notations. Prior work focuses on extracting predictable, analytical models from laws, regulations and policies to help software developers evaluate their system against a set of rules or norms.
David Garlan does research in formal modeling, software architectures, and self-adaptive systems. In addition to Rainbow, he has recently spearheaded a new research area of end-user architecting that aims to use formal software architecture techniques to provide support to end-users to compose and reason about software compositions that are used in their everyday professional activities.
Jim Herbsleb's interests lie primarily in the intersection of software engineering, computer-supported cooperative work, and socio-technical systems, focusing on such areas as geographically distributed development teams and large-scale open source development.
Christian Kästner does research in controlling the complexity caused by variability in software systems, from providing tool support to static analysis and testing. Among others he developed an infrastructure to parse and type check all 210000 compile-time configurations of the Linux kernel.
Claire Le Goues
Claire Le Goues researches ways to automatically assure and improve the quality of large, real-world, evolving software systems; she uses applied program analysis to, e.g., keep autonomous systems running correctly, automatically repair bugs in programs, and help developers reason about the correctness of their code.
Brad A. Myers does research at the intersection of software engineering and human-computer interaction (HCI). One of his current projects focuses on supporting exploratory programming which has developed a mechanism for selective undo, which will be adapted for this summer's project. Dr. Myers has a long history of successfully working with undergraduates on project, including many who have been co-authors on award-winning papers.
Bradley Schmerl does research in software architectures and self-adaptive systems. With the ABLE research group, he has developed a system called Rainbow for adapting systems at run-time in the face of multiple concurrent quality concerns.
Josh Sunshine has broad research interests at the intersection of programming languages and software engineering. He is particularly interested in better understanding of the factors that influence the usability of reusable software components.
Bogdan Vasilescu does research at the intersection of software engineering, social computing, and computer-supported cooperative work. Drawing from social coding platforms like GitHub, his work employs data-driven research methods to study composition and efficiency in distributed development environments.