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 paper on the initial work appeared in ICSE 2009. The genetic side of the party will appear in a paper in GECCO 2009. We are currently exploring the security implications of our technique in the context of a closed-loop repair system for security-critical vulnerabilities and of the effect of test-suite selection and optimization techniques on our runtime and success. When I return to Virginia in the fall, I intend to explore the utility of automatically-mined repair templates to increasing the range of vulnerabilities we can address.
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. I am working on a journal version of the work with additional analysis of the results, new comparative experiments, and a larger number of benchmarks.
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.
|