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.

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, FM ‘24) (talk)
  • Specification engineering: How do we develop & validate specifications that accurately reflect the user’s intent? How do we best explain or visualize formal abstractions? (ICSE ‘25, PLATEAU ‘25, SoSyM ‘24)
  • Automated reasoning: How do we decompose a complex specification into simpler pieces for scalable analysis? How do we design a system to be more amenable to analysis in the first place? (FMCAD ‘24, NFM ‘24, FSE ‘21)
  • Safe and resilient CPS: Can we identify potential failures in complex CPS before they occur? How do we deal with erorrs in ML-based components to ensure overall system safety? (ICSE ‘25, SEAMS ‘24, NFM ‘24)

People

Teaching

Service

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.