Our research concerns a core issue in Computer Science: how to develop correct, reliable, and secure software. To address these issues, our group works on creating better tools for manipulating programs and analyzing their execution properties. The work uses ideas that come primarily from the fields of programming languages, compilers, and software engineering, but there are connections to databases, machine learning, and numerical analysis. Current efforts concern the development of methods to (i) automatically obtain program invariants (which help to characterize the behavior of loops and procedures); (ii) automatically or semi-automatically simplify (“debloat”) software by collapsing and simplifying layers in software, and by removing features; and (iii) create semantics-based abstractions of program artifacts suitable for the application of machine-learning techniques.

Awards and Achievements

  • ACM SIGPLAN Programming Languages Achievement Award ( 2017)
  • Foreign member, Academia Europaea ( 2013)
  • Fellow of the Association for Computing Machinery ( 2005)
  • Guggenheim Fellowship, John Simon Guggenheim Memorial Foundation ( 2000)
  • Humboldt Research Award, Alexander von Humboldt Foundation ( 2000)
  • NSF Presidential Young Investigator Award ( 1986)
  • ACM Doctoral Dissertation Award ( 1983)