Jonathan Dorn

Contact Info

  • Rice Hall 434
    Department of Computer Science
    85 Engineer's Way
    Charlottesville, VA 22904

I am a Ph.D. candidate (graduating in August 2017) in Computer Science at the University of Virginia, advised by Wes Weimer. My research is on non-functional properties and human factors in software engineering. I am interested in properties of both the static source code, such as readability and program understandability, and the dynamic run-time behavior of programs, including energy use and output quality. In particular, I investigate how humans perceive and interact with source code and apply program analyses, transformations, and search-based software engineering techniques to improve the acceptability of these properties.

I successfully defended my dissertation, titled "Optimizing Tradeoffs of Non-Functional Properties in Software," on July 20, 2017. [PDF]


In this project, we use lightweight program transformations and genetic search to reduce the energy requirements of data center applications. We leverage mutational robustness (small changes to programs often retain the original program's functionality) along with insights from profile-guided optimization to effectively transform the program to use less energy. In our experiments, we reduce energy by 20% on average while retaining the original functionality and by almost 30% with human-acceptable levels of error.


Developers spend an order of magnitude more time reading and maintaining code than writing new code. This project aims to understand what factors control the readability of source code and investigates automatic techniques to improve readability. In an IRB-approved human study, users were able to answer questions 14% more quickly (with no loss of accuracy) about automatically generated tests when they were optimized for readability than when they were not.

Program Repair

Existing approaches to automatic program repair require a specification of the desired program behavior, either explicit (e.g., pre- and post-conditions) or implicit (e.g., inferred from a test suite). Although many bug reports include a failing test case that specifies the desired missing behavior, many real-world programs lack sufficient passing tests to describe the desired existing behavior. In this project, we investigate the applicability of specification mining and automatic test-case generation techniques to capture existing behavior for use in program repair.

Shader Simplification

Many modern rendering systems use small programs called shaders to specify the properties of elements of the scene being rendered. The development of these shaders is complicated by aliasing artifacts, when the features encoded in the shader change too rapidly relative to the pixels of the image. In this project, we apply local light-weight transformations and heuristic search to existng shader programs to introduce the pixel size as a parameter. We find that our approach produces images with similar quality to state-of-the-art computationally intensive approaches, but with significantly lower runtime.
TSE Jonathan Dorn, Jeremy Lacomis, Westley Weimer, Stephanie Forrest. Automatically Exploring Tradeoffs Between Software Output Fidelity and Energy Costs Transactions on Software Engineering. (Under submission)
Jonathan Dorn, Connelly Barnes, Jason Lawrence, Westley Weimer. Towards Automatic Band-Limited Procedural Shaders, Pacific Graphics. 2015. [PDF] [video (160 MB)] [supplemental material] [slides (17 MB)]
Ermira Daka, Jose Campos, Gordon Fraser, Jonathan Dorn, Westley Weimer. Modeling Readability to Improve Unit Tests, Foundations of Software Engineering (ESEC/FSE). 2015. [PDF]
ACM SIGSOFT Distinguished Paper Award
SSBSE Ermira Daka, Jose Campos, Jonathan Dorn, Gordon Fraser, Westley Weimer. Generating Readable Unit Tests for Guava, Symposium on Search Based Software Engineering (SSBSE). 2015. [PDF]
Eric Schulte, Jonathan Dorn, Stephen Harding, Stephanie Forrest, Westley Weimer. Post-compiler Software Optimization for Reducing Energy, Architectural Support for Programming Languages and Operating Systems (ASPLOS). 2014. [PDF]
HotPar Chris Gregg, Jonathan Dorn, Kim Hazelwood, Kevin Skadron. Fine-Grained Resource Sharing for Concurrent GPGPU Kernels, 4th USENIX Workshop on Hot Topics in Parallelism (HotPar'12). 2012. [PDF]

I taught a compilers practicum to 9 students in the spring semester of 2014. [lecture slides]

This course was an optional companion to CS 4610 Programming Languages, for advanced students to apply PL concepts to implement an optimizing compiler for a small object-oriented language. The assignments were designed by the CS 4610 instructor to reduce redundancy between assignments in both classes, while I was responsible for the content and presentation of the lectures, answering questions, and providing guidance to the student teams. The lectures covered basic code generation for a byte code virtual machine and x86_64, object layout, calling conventions, boxing and unboxing of primitives, peephole optimizations, register allocation, and dataflow analysis.

Masters of Computer Science

I completed both the MCS degree and the Ph.D. qualifying exams at the University of Virginia in December 2012, under the advisement of Westley Weimer. My thesis was titled A General Software Readability Model [slides].

Bachelors Degrees

I received a B.S. in Computer Science from the University of Texas at Austin in May 2004. My thesis was titled "The Development of a General Purpose Raytracer for Acoustical and Visual Rendering of Virtual Environments," advised by Bruce Naylor.

I also received a B.A. in Plan II from the University of Texas at Austin in May 2004.