Current:
- Genetic Programming for Automatic Program Repair
In conjunction with our excellent coauthors at the University of New Mexico, we have developed a technique for automatic test-case-driven program repair using genetic algorithms. A journal version is in revision; it includes new results that evaluate repair quality and explore the implementation of a closed-loop repair system. I am currently composing my Ph.D. dissertation proposal. Generally, I will be exploring ways to use dynamically-learned program invariants and mined repair templates to improve the technique's accuracy, scalability, and expressivity.
Previous:
- Specification Mining/Code Quality Metrics
I improved the accuracy of automatic specification mining of programs by making use of additional information available in the source code, related software engineering artifacts, and a collection of static analyses. This became my masters thesis. A paper on the subject appeared in TACAS 2009. A journal version is in revision; it contains new benchmarks and additional analysis of the proposed quality metrics, as well as a comparison between the proposed metrics and previously-proposed complexity metrics.
Back-Burnered:
- Automatic Variable Naming
Ray Buse and I hypothesize that we can automatically name a program's variables by looking at how they are used. We are working on a tool that automatically infers a reasonable set of variable names based on various code features; this might be particularly useful when applied to decompiled code, for example. In practice, it means I do a lot of annotating. This idea has been back-burnered while we figure out better ways to do/evaluate it
Undergrad:
- Algebraic Type Isomorphisms
For my undergraduate thesis work, I implemented a system that coerces datatypes in SML code to take new, isomorphic types while remaining operationally sound. I still have the code somewhere if you'd like to see it.
|