Dr. Eric Schulte

Table of Contents

FA8D C2C3 E8A0 A749 34CD 9DCF 3C1B 8581 614C A05D


I research methods of automating software development and reverse engineering tasks. My work benefits from the understanding of software as an evolved system.

I am the Director of Automated Software Engineering at GrammaTech, where I lead the Program Synthesis and Binary Rewriting research areas. At GrammaTech I develop techniques automating the analysis, reverse engineering, maintenance, improvement, and synthesis of software systems. These techniques apply variously to software source code repositories and/or to stripped binary executables.


  • As of August 2018 I am Director of Automated Software Engineering at GrammaTech. At GrammaTech I get to work on the automation of software engineering tasks including refactoring, bug-injection, decompilation, and binary rewriting for hardening and program optimization.
  • As of July 2014 I have completed my degree at the University of New Mexico and accepted a position at GrammaTech.
  • From August 2009 through July 2014 I was enrolled as a doctoral student at the University of New Mexico as a member of Stephanie Forrest's Adaptive Computation Group.
  • For the five years previous to graduate school, I was employed by Mitre, a Federally Funded Research and Development Center. During that time I was promoted to the position of Senior AI Engineer and played a key technical role supporting project Argus(PDF).
  • I completed my undergraduate studies at Kenyon College with a semester at the Budapest semester in Mathematics. I graduated with a BA in mathematics and a minor in philosophy.


I've written, maintained or significantly contributed to the following software which includes large open-source projects, projects currently under active development at GrammaTech, and small utilities (presented in order of significance and activity).

  • SOFTWARE-EVOLUTION-LIBRARY (SEL) is a common lisp library for the programmatic modification and evaluation of software. See the SEL Manual for more information.
  • Binary Analysis and Reverse Engineering. See this blog post announcing the open-source release of these tools.
    • GTIRB Intermediate Representation for Binary analysis and transformation. Includes a Protobuf specification and a reference C++ library.
    • ddisasm A fast and accurate disassembler. A Datalog engine powers this high performance re-assemblable disassembler
    • gtirb-pprinter Pretty printer from GTIRB to assembly code
  • Manipulation of C-language (and other) Abstract Syntax Trees:
  • CURRY-COMPOSE-READER-MACROS for concise expression of function partial application and composition in Common Lisp. I've also implemented something similar for Emacs Lisp in curry-compose.el.
  • GRAPH is a Common Lisp library for graphs manipulation and analysis.
  • Babel adds literate programming and reproducible research functionality to Org-mode, a major mode of the Emacs text editor.
  • Rinari is a Ruby on Rails minor mode for Emacs.
  • Manipulation of ELF files:
    • elf a CLOS based API for Elf file manipulation in Common Lisp
    • rw-elf a simpler C library for ELF file manipulation
  • DELTA-DEBUG is a Common Lisp delta debugging implementation.
  • ONCs is a prototype fully distributed lisp virtual machine.


  • Antonio Flores-Montoya, Eric Schulte Datalog Disassembly arXiv Pre-Print 2019 (PDF, Bibtex)
  • Eric Schulte, Suan Yong, Dave Melski. Inuring: Live Attacker-guided Repair Workshop on Forming an Ecosystem Around Software Transformation 2019 (PDF, Bibtex)
  • Vineeth Kashyap, Jason Ruchti, Lucja Kot, Emma Turetsky, Rebecca Swords, David Melski, Eric Schulte Automated Customized Bug-Benchmark Generation Source Code Analysis and Manipulation (SCAM) 2019 (distinguished paper) (PDF, Bibtex, Data set)
  • Eric Schulte, Jonathan Dorn, Antonio Flores Montoya, Aaron Ballman, Tom Johnson GTIRB: Intermediate Representation for Binaries arXiv Pre-Print 2019 (PDF, Bibtex)
  • Eric Schulte, Contributors Software Evolution Library Manual 2018 (Library Source, Manual HTML, Bibtex)
  • Eric Schulte, Jason Ruchti, Matt Noonan, David Ciarletta, Alexey Loginov Evolving Exact Decompilation Workshop on Binary Analysis Research 2018 (PDF, Bibtex, Blog post)
  • Deborah Katz, Jason Ruchti, Eric Schulte Using Recurrent Neural Networks for Decompilation Software Analysis, Evolution and Reengineering (SANER) 2018 (PDF, Bibtex)
  • Benoit Baudry, Nicolas Harrand, Eric Schulte, Chris Timperley, Shin Hwei Tan, Marija Selakovic, Emamurho Ugherughe A spoonful of DevOps helps the GI go down Genetic Improvement Workshop 2018 (PDF, Bibtex)
  • Joel Lehman, et. al. The Surprising Creativity of Digital Evolution: A Collection of Anecdotes from the Evolutionary Computation and Artificial Life Research Communities arXiv 2018 (PDF, Bibtex)
  • Vineeth Kashyap, Rebecca Swords, Eric Schulte, David Melski. MuSynth: Program Synthesis via Code Reuse and Code Manipulation International Symposium on Search Based Software Engineering 2017 (PDF, Bibtex)
  • Eric Schulte, Michael McDougal, Dave Melski. Software Transformation: Applications, Tools, Challenges, and Program Representation Workshop on Forming an Ecosystem Around Software Transformation 2016 (PDF, Bibtex)
  • Eric Schulte, Westley Weimer, Stephanie Forrest. Repairing COTS router firmware without access to source code or test suites: A case study in evolutionary software repair Workshop on Genetic Improvement 2015 (best paper) (PDF, Bibtex)
  • Eric Schulte. Neutral Networks of Real-World Programs and their Application to Automated Software Evolution Ph.D. Dissertation, University of New Mexico 2014 (PDF, HTML, Bibtex slides, more)
  • 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, slides, Bibtex)
  • Eric Schulte, Zachary P. Fry, Ethan Fast, Westley Weimer, Stephanie Forrest. Software Mutational Robustness Genetic Programming and Evolvable Machines 2013 (arXiv, Springer, PDF, Bibtex, followup work by Harrand et al.)
  • Eric Schulte, Jonathan DiLorenzo, Westley Weimer, Stephanie Forrest. Automated Repair of Binary and Assembly Programs for Cooperating Embedded Devices Architectural Support for Programming Languages and Operating Systems (ASPLOS) 2013 (PDF, Bibtex, slides)
  • Eric Schulte, Dan Davison, Tom Dye, Carsten Dominik. A Multi-Language Computing Environment for Literate Programming and Reproducible Research Journal of Statistical Software (JSS site (supplemental materials), PDF, Bibtex)
  • Eric Schulte, Dan Davison. Active Documents with Org-Mode Computing in Science & Engineering 2011 (PDF, Bibtex, source)
  • Eric Schulte, David Ackley. Physical Evolutionary Computation University of New Mexico TR-CS-2011-01 (PDF, Bibtex)
  • Eric Schulte, Stephanie Forrest, Westley Weimer. Automated Program Repair through the Evolution of Assembly Code Automated Software Engineering (ASE) Short Paper 2010 (PDF, Bibtex). A summary is presented in the following presentation and poster.
  • Paul Lehner, Charles Worrell, Chrissy Vu, Janet Mittel, Stephen Snyder, Eric Schulte, Warren Greiff, An Application of Document Filtering in an Operational System Information Processing & Management 2010 (Bibtex)

Course Notes

Curriculum Vitae

My CV (as of April 2019) is available at eric-schulte-cv.pdf.

This document is created using Org-mode and Org-babel. The original plain-text document is available at eric-schulte.org (preview).