1. [Jul 2015] Released alpha version of Sketch-N-Sketch, a prodirect manipulation SVG editor.
  2. [Jun 2015] Invited to serve on POPL 2016 SRC and ECOOP 2016 Program Committees.
  3. [May 2015] Honored to receive a Neubauer Faculty Fellowship for undergraduate teaching!
  4. [Apr 2015] Presented IsoLate at ESOP.
  5. [Jan 2015] IsoLate camera-ready sent to ESOP 2015.
  6. [Jan 2015] Using Elm in a new Functional Programming course.

... More News ...

Currently Teaching

None (Summer 2015).

... More Classes ...


I am interested in programming language, compiler, and program analysis technology. Below are some of the projects I've worked on. For more information about my research, check out my publications and talks.

active projects

[Sketch-N-Sketch] Direct manipulation interfaces are useful in many domains, but the lack of programmability in a high-level language makes it difficult to develop complex and reusable content. We present a prodirect manipulation editor for scalable vector graphics (SVG), which allows the user to freely mix between programmatic and direct manipulation.
[Dependent JavaScript] Scripting languages include features that frustrate static reasoning, such as extensible objects, dynamically computed keys, loosely coupled recursion, reflection, and dynamic code loading. This project aims to develop type systems to describe idiomatic programs in scripting languages such as JavaScript, Python, and Ruby.

older projects

[Staged Information Flow] The prevalence of dynamically loaded code makes program analysis for JavaScript difficult. We present a staged approach to tracking information flow that splits the analysis burden between compile-time and run-time.
[Fine, Microsoft Research] Modern SMT solvers allow refinement type systems to track security and other complex properties, but they become a large part of the compiler's trusted computing base (TCB). Fine incorporates a type-preserving translation to eliminate the solver from the TCB. Fine is a precursor to MSR's F* language.
[Radar] Defining a dataflow analysis for concurrent programs is complicated by the subleties of thread interleavings and locking protocols. Radar automatically converts a sequential dataflow analysis to a concurrent one by making use of datarace information from the Relay race detector for C programs.


Brian Hempel (PhD student, starting Fall 2015)
Jacob Albers (BS student)
Mitchell Spradlin (BS student)

Izaak Meckler (BS 2015, Honors Thesis)