I work mainly at the intersection of software engineering and formal methods. I am especially interested in leveraging rigorous modeling and analysis techniques to design software systems that are safe, secure, and reliable. My current interests include software design, requirements, modeling, specification and verification, system safety, security, and cyber-physical systems.

Some of the systems that I’ve worked on include intelligent vehicles, industrial control systems, medical devices, IoT & mobile platforms, and web applications.

News With Tobias Dürschmid, I am teaching a new course in Spring 2024: 17-423/723 Designing Large-scale Software Systems.

Projects

  • Designing for robustness: What does it mean for software to be robust against an evolving or misbehaving environment? How do we construct systems that are robust by design? (FSE ‘20, ICSE ‘23, CAV ‘23, SEAD ‘20) (talk)
  • Feature interactions: How do detect and safely manage unanticipated interactions between independently-developed system components? (SEAMS ‘23, ASE ‘20, RV ‘18)
  • Multi-layer security analysis: How do we reason about and mitigate against security attacks that exploit details across multiple levels of abstraction? (CSF ‘22, CAV ‘19, FSE ‘16, SecDev ‘16)
  • Resilience in CPS: Can we identify potential safety failures in complex CPS before they occur? How do we recover from such a failure? (RV ‘20, CDC ‘17)

Team

Teaching

Services

Bio

Prior to joining CMU, I spent a year working on connected vehicles at Toyota, and was a postdoctoral scholar on the NSF ExCAPE program with Stéphane Lafortune and Stavros Tripakis. I received a PhD in Computer Science at MIT, working with Daniel Jackson. Before MIT, I studied software engineering at the University of Waterloo, where I spent several wonderful terms as an undergraduate researcher in WatForm.