I am a fourth year currently working with Olin Shivers and David Van Horn on higher-order flow analysis. I sometimes collaborate with Matt Might.
Generally, my work is on finding the right mathematical frameworks to concisely, correctly and easily define sound, precise and efficient flow analyses for modern programming languages. There are three (or four) dimensions of challenge for scaling such analyses.
- Efficiency
- Verifiability
- Precision
- (Grokability)
There is a promising approach to systematically and easily constructing provably sound and precise analyses by transforming abstract machines into abstract abstract machines, but the method lacks maturity. My work seeks to extend this method by importing innovations in both worlds of abstract machines (programming language interpreters) and unproven, but "works in practice" methods for improving analysis performance (or proven, but only for first-order languages). A primary constraint is maintaining the systematic and intuitive methods for derivation. The power is behind the intuitions, so a secondary goal in my work is to bring powerful analysis to a larger audience.
Combining intepreters and abstract interpreters:
Direct threading in bytecodes = abstract compilation.
JIT stack allocation = pushdown escape analysis with disposable stacks.
Generalizing and formalizing analyzers in "the wild":
SSA-based sparse analyses = trace inspection with fast-forwarding (ongoing)
The essence of summarization-based analysis:
Pushdown flow analysis for higher-order languages has two
combating formalisms that are both unfortunately
complex. There is a systematic approach to derive pushdown
analyses that is simple and does not
need expert knowledge on reachability queries for
context-free languages to implement.
With David Van Horn, Matt Might and Nicholas Labich
Fundamentals of Computer Science 2 2510 (Summer 2012)
TA Office hours: Fridays 13:30-15:30Location: WVH 308
Compilers 4410 (Spring 2012)
TA Office hours: By appointmentLocation: WVH 308
Fundamentals of Computer Science 1 2500 (Fall 2011)
TA Office hours: Monday 10:00 - 12:00Location: WVH 308
Fundamentals of Computer Science 2 2510 (Spring 2011)
Location: WVH 308Program Design Paradigms 5010 (Fall 2010)
TA office hours: Friday 16:30 - 18:30Location: WVH 308
Logic & Computation 2800 (Spring 2010)
TA office hours: Wednesday 9:30 - 10:30 and 12:30 - 13:30Location: WVH 316
Logic & Computation 2800 (Fall 2009)
TA office hours: Tuesday 9:00 - 11:00Location: WVH 316
Lab materials: Click here.
I maintain a blog that is sporadically updated with theorems I find interesting, or how I have hacked around a sparsely documented or buggy API/application so that others may use the power of Google to solve their problems.