Projects and papers

My current research interests cover most of the programming pipeline, from designing more expressive languages, through improving the compilers, to certifiably proving code correct. The overarching goal is to make it easier to write programs correctly the first time, and to improve confidence in the resulting products.

  • Pure-Causal Atomicity: The goal of atomicity analyses is to verify that certain sections of code appear to execute atomically to all other threads. This project extends recent work on causal atomicity (a model-checking approach to verify atomicity using Petri nets) with abstract atomicity (a type-theoretic approach using purity to validate mode code patterns as atomic).
  • SEMINAL: I’m working with Dan Grossman to improve the quality of error messages given by compilers. In practice, these messages are often precise but cryptic, and generating them often complicates the compilers themselves (potentially introducing bugs). This project aims to separate the two aspects of error finding and reporting, and in the process make the compilers both simpler and more informative.

Previous work

I earned my undergraduate degree at Yale University, where I worked with with Paul Hudak and Zhong Shao, in particular on domain-specific languages and their properties.

  • Yampa: As my senior project at Yale, I worked on proving algebraic properties of the embedding of Yampa in Haskell.

Classes and activities

Winter 2008:

CSE 590p:
Programming Systems Seminar
CSE 590s:
Systems Seminar
CSE 341:
TA for Programming Languages
CSE 591a:
WASP Working Group

Fall 2007:

CSE 544:
Computer Security and Privacy
CSE 590p:
Programming Systems Seminar
CSE 590o:
Parallel Programming Environments Seminar
CSE 590s:
Systems Seminar
CSE 591a:
WASP Working Group

Summer 2007:

CSE 326:
Instructor for Data Structures

Spring 2007:

CSE 551:
Operating Systems
CSE 590p:
Programming Systems Seminar
CSE 590s:
Systems Seminar
CSE 451:
TA for Operating Systems
CSE 591a:
WASP Working Group

Winter 2007:

CSE 506:
Advanced Topics in Programming Languages
CSE 557:
Computer Graphics
CSE 590p:
Programming Systems Seminar
CSE 401:
TA for Introduction to Compiler Construction
CSE 591a:
WASP Working Group

Fall 2006:

CSE 544:
Principles of Database Systems
CSE 590p:
Programming Systems Seminar
CSE 590s:
Systems Seminar
CSE 591a:
WASP Working Group

Spring 2006:

CSE 503:
Software Engineering
CSE 599f:
Software Model Checking
CSE 590p:
Programming Systems Seminar
CSE 590s:
Systems Seminar
CSEP 505:
TA for Programming Languages
CSE 591a:
WASP Working Group

Winter 2006:

CSE 521:
Design and Analysis of Algorithms
CSE 501:
Implementation of Programming languages
CSE 590p:
Programming Systems Seminar
CSE 590s:
Systems Seminar
CSE 591a:
WASP Working Group
CSE 519:
Current Research in Computer Science
CSE 520:
Computer Science Colloquium

Fall 2005:

CSE 531:
Complexity and Computability
CSE 505:
Concepts of Programming languages
CSE 590p:
Programming Systems Seminar
CSE 591a:
WASP Working Group
CSE 599a:
TA Training Seminar
CSE 519:
Current Research in Computer Science
CSE 520:
Computer Science Colloquium

Contact

Email (essential):
(first initial + last name) {at} cs.washington.edu
Location (likely):
Paul G. Allen Center, Office 378
Post (possible):
UW CSE Box 352350, Seattle, WA 98195-2350