I am a Senior Scientist at GrammaTech, Inc. I research automated software engineering, software evolution, binary analysis, and binary optimization. My research interests also include the way developers read, understand, and interact with programs.
|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.
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]|
|TSE||Jonathan Dorn, Jeremy Lacomis, Westley Weimer, Stephanie Forrest. Automatically Exploring Tradeoffs Between Software Output Fidelity and Energy Costs Transactions on Software Engineering. 45(3): 219-236. 2019. [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]|
|Jeremy Lacomis, Jonathan Dorn, Westley Weimer, Stephanie Forrest. Automatically Reducing Energy Consumption of Software. The Energetics of Computing in Life and Machines, 2019. [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.