I am a Researcher in the Programming Principles and Tools group. I am investigating memory management for managed programming languages. I am also working on verification for concurrent programs.
Prior to joining Microsoft in March 2010, I spent the last four years in the Cambridge Computer Lab on an RAEng/EPSRC research fellowship investigating how to verify object-oriented and concurrent programs meet their specifications. I have also made some brief forays into programming language semantics and design.
Before the research fellowship I did a post-doc with Richard Bornat verifying crazy concurrent programs running on exotic hardware. And prior to that I did a Ph.D. in the Computer Lab in Cambridge with Gavin Bierman and Andrew Pitts on extending separation logic to reason about Java programs.