office ECOT 621
mail 430 UCB, Boulder, CO 80309-0430 USA
phone +1 303 492 8894
fax +1 303 492 2844

Faculty Openings (Two Positions). ECEE has two tenure-track positions seeking candiates with background in programming languages, concurrency, security, formal methods, verification, or system engineering.

Ph.D. Positions. I am always looking for enthusiastic students interested in working with me on research projects in programming languages and software systems. If you are interested in finding out more, please contact me.

For recent news about the Programming Languages group at the University of Colorado Boulder, take a look at our most recent recruiting talk.

I am an assistant professor in the Department of Computer Science and the Programming Languages and Verification Group at the University of Colorado Boulder.

I work primarily in the areas of programming languages and program analysis. My research interests center on tools and techniques for building, understanding, and ensuring reliable computational systems. Currently, my focus is on using novel ways of interacting with the programmer to design more precise and practical program analyses. The Xisa project is an instance of this approach that infers precise properties of complex data structure manipulations. The novelty of Xisa is that it extracts both the necessary invariants and reasoning rules from executable assertions (analogous to data structure validation code often written for testing). This approach allows the developer to focus the analysis to the properties of interest and without using a separate formalism for testing and static analysis.

I completed my Ph.D. in 2008 with George Necula in the EECS department at the University of California, Berkeley. I also spent the fall of 2008 as a post-doc with Jeff Foster in the PLUM group at the University of Maryland, College Park before joining the University of Colorado Boulder in January 2009.

Even earlier, I spent my undergraduate days at Carnegie Mellon University completing a senior thesis with Frank Pfenning and Bob Harper.

Students

Devin Coughlin (co-advised with Amer Diwan). Gradual programming.
Arlen Cox (co-advised with Sriram Sankaranarayanan). Concurrency.
Sam Blackshear. Witness-generating program analysis.
Yi-Fan Tsai. Hybrid shape analysis.

Teaching

Principles of Programming Languages
CSCI 3155
Readings in Programming Languages
Spring 2012: Analysis of Dynamic Languages
CSCI 7900
Compiler Construction
CSCI 4555/5525, ECEN 4553/5523
Program Analysis: Theory and Practice
CSCI 7135
Program Analysis Practicum
CSCI 7135
Fundamentals of Programming Languages
CSCI 5535

Selected Projects

Efficient algorithms and automatic tools for reasoning about heap-manipulating programs, such as those that use recursive data structures like pointer-based lists and trees.

Papers: POPL 2011, ESOP 2010, POPL 2008, and SAS 2007

Recent Papers

2012
A Bit Too Precise? Bounded Verification of Quantized Digital Filters
TACAS 2012: International Conference on Tools and Algorithms for the Construction and Analysis of Systems
2011
The Flow-Insensitive Precision of Andersen's Analysis in Practice
SAS 2011: International Static Analysis Symposium
Extended Version: Technical Report CU-CS-1083-11
2011
Calling Context Abstraction with Shapes
POPL 2011: ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
2011
Access Nets: Modeling Access to Physical Spaces
VMCAI 2011: International Conference on Verification, Model Checking, and Abstract Interpretation
Extended Version: Technical Report CU-CS-1076-10
2010
Mixing Type Checking and Symbolic Execution
PLDI 2010: ACM SIGPLAN Conference on Programming Language Design and Implementation
Extended Version: Technical Report CS-TR-4954
[more]

Recent Talks

June 10, 2011
The Flow-Insensitive Precision of Andersen's Analysis in Practice
University of California, Berkeley
March 16, 2011
Xisa: Extensible Inductive Shape Analysis
Carnegie Mellon University
February 25, 2011
Programming Languages Research Overview
University of Colorado, Boulder
Prospective Ph.D. Student Open House
December 17, 2010
Calling Context Abstraction with Shapes
National Taiwan University
March 6, 2010
Programming Languages Research Overview
University of Colorado, Boulder
Prospective Ph.D. Student Open House
[more]

Professional Activities

PLDI 2012
External Review Committee Member
ACM SIGPLAN Conference on Programming Language Design and Implementation
POPL 2012
Treasurer and External Review Committee Member
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
VMCAI 2012
Program Committee Member
International Conference on Verification, Model Checking, and Abstract Interpretation
NSAD 2011
Program Committee Member
International Workshop on Numerical and Symbolic Abstract Domains
LCPC 2011
Program Committee Member
International Workshop on Languages and Compilers for Parallel Computing
PASTE 2011
Program Committee Member
ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering
POPL 2011
Treasurer
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
POPL 2010
Co-Treasurer
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
FRACTAL F2009
Organizer
Front Range Architecture Compilers Tools and Languages Workshop
PLDI 2009
External Review Committee Member
ACM SIGPLAN Conference on Programming Language Design and Implementation
AIOOL 2005
Program Committee Member
International Workshop on Abstract Interpretation of Object-Oriented Languages