Mainstream programming languages like C++ and Java provide an
incredibly complex and error-prone semantics for threads in the name
of efficiency. Can we instead provide the simple interleaving
semantics of threads (known formally as sequential consistency)
at a reasonable cost? Start here for
the high-level problem and motivation. In recent work we created a sequentially
consistent Java virtual machine and measured its performance.

Network Programming and Verification

Computer networks have become critical infrastructure for all Internet-based services, and as a result the requirements on and complexity of networks have rapidly increased. Can programming languages technology help to manage this complexity? We are working on both verification of existing networks and new languages to design networks that are correct by construction.