Dr. Eric Schulte

Table of Contents

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


I am the Director of Automated Software Engineering at GrammaTech, where I lead the Program Synthesis and Binary Rewriting research areas. I build tools for people who work with software; from helping developers write and maintain their own projects to helping reverse engineers understand third-party binaries. My work is motivated by an understanding of software as an evolved system that displays many properties previously identified in biological systems. I leverage a combination of evolutionary computation, statistical machine learning, and formal methods techniques towards the goal of automating software development tasks from the mundane (merge resolver) to the creative (the mnemosyne program synthesis framework).


  • Antonio Flores-Montoya, Eric Schulte Datalog Disassembly 29th USENIX Security Symposium 2020 (distinguished paper) (PDF, Bibtex, Software)
  • 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, Shih An Pan, Julien Henry, 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)

Software Projects

I've written, managed, 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).

  • Mnemosyne brings program synthesis research to the modern IDE.
  • 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, this tutorial introducing the use of GTIRB for binary rewriting, and this datasheet describing open-source and commercial tools build on GTIRB.
    • 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
  • 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.
  • ONCs is a prototype fully physically distributed lisp virtual machine.

Curriculum Vitae

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

Author: Eric Schulte

Created: 2020-12-25 Fri 14:22