My research is centered around devising mathematical techniques
that aid the development of safe concurrent software, and applying
those techniques to realistic computer systems. I investigate how to
improve the way programmers create efficient software and ensure that
these programs behave correctly. To this end, I have made advances
along a spectrum of fields, ranging from systems/concurrency, to
foundational results in formal methods. My expertise in the former is
marked by my service on the SPAA 2012 program committee, and the
latter by my service on the POPL 2013 program committee.
In recent years I have
made advances in two particular areas:
1. I have improved programming
languages by introducing new language features which are, by design,
both safer and more efficient.
In particular, I am concerned with language advances which enable
engineers to safely produce software which consists of parallel
computation (e.g. my work on Transactional Boosting,
Turning Nondeterminism into Parallelism).
2. I have developed static and dynamic program analysis techniques in
order to better understand the performance (e.g. discovering symbolic complexity bounds),
understand the behavior (e.g. request tracing in BorderPatrol), discover bugs and
formally prove correctness of programs (e.g. proving
Linear Temporal Logic properties
reduction to a program analysis task
symbolic partial determinization).
- PhD, Computer Science, University of Cambridge, 2012.
- Sc.M, Computer Science, Brown University, 2008.
- B.S., Computer Science and Physics, College of William & Mary, 2001.
- Visiting Assistant Professor, New York University
- Visiting Professor, Nagoya University, Japan
- Research Scientist & Principal Investigator, New York University
- Research Intern, Microsoft Research Cambridge
- Research Intern, Microsoft Research Redmond
- Adjunct Faculty, Newbury College
- Software Engineer at Amazon.com/ IMDb