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.
The aim of Keenan Crane's work is to help machines reason more effectively about shape. This work includes fundamental algorithms for processing 3D geometric data, and more recently, domain specific languages for translating abstract logical relationships into concrete geometric diagrams.
Lorrie Cranor is a Professor of Computer Science and of Engineering and Public Policy. She directs the CyLab Usable Privacy and Security Laboratory, and her research combines three high-level strategies to make secure systems more usable: building systems that "just work" without involving humans in security-critical functions; making secure systems intuitive and easy to use; and teaching humans how to perform security-critical tasks.
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.
Limin Jia is interested in applying formal techniques to make software systems more secure, either through using language-based techniques to build provably secure software systems, or using formal logic to verify the security properties of (distributed) software systems, or developing formalisms to reason about security and privacy guarantees of software systems in the presence of adversaries
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.
Heather Miller is interested in various flavors of distributed and concurrent computation, often from the perspective of programming languages: data-centric, data-intensive (big data), and eventually-consistent (edge computing).
A major recurring theme in my work is composability. I seek to enable the construction of complex distributed systems via the composition of well-understood components that are correct by construction.
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 programmingwhich 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.