My research seeks to improve software reliability and security by developing new tools that help ensure correctness. My students and I tackle these problems on a variety of fronts, from fully formally verifying critical platforms like the web browser to developing novel algorithms that automatically check compiler optimizations. We draw on a diverse array of tools and techniques to address these challenges, including proof assistants, SMT solvers, translation validation, and type systems. While we spend many hours working out proofs on the whiteboard, we also like to get our hands dirty and build real, large systems. We get free food when we work late.
I can juggle and solve Rubik's cubes, but not at the same time.
Please see my homepage for more information.