#+TITLE: Dr. Eric Schulte
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
- 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
- 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:
- clang-mutate manipulates C-family ASTs with Clang
- cil-mutate manipulates C Intermediate Language ASTs with CIL
- llvm-mutate manipulates LLVM IR with an LLVM compiler pass
- 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
/arXiv Pre-Print 2019/
- 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/
- Eric Schulte, Contributors
_Software Evolution Library_
(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/
- 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/
- 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/
- 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
- Spring 2013
- =biol517= Basic Graduate Evolution (notes)
- Spring 2011
- =cs591= Cognitive and Comp Neuroscience (notes)
- final ego-machine.pdf (code, video)
- Fall 2010
- =cs547= Neural Networks (notes)
- final paper cs547.schulte.final-project.pdf
- Comprehensive Exam (notes)
- Spring 2010
- =cs500= Theory of Computation (notes)
- =cs550= Programming Languages & Systems (notes)
- final presentation schulte.non-von-neumann-computation.pdf
- a concurrent propagator system implemented in Clojure
- =cs691= Robust Physical Computation Seminar (notes)
- =cs691= Adaptive Reading Group (notes)
- Fall 2009
- =cs558= Software Foundations (notes)
- =cs587= Advanced Operating Systems (notes)
- final paper bfs-v-cfs_groves-knockel-schulte.pdf
- =cs591= Robust Physical Computation (notes)
- =cs691= Adaptive Reading Group (notes)
** Curriculum Vitae
My CV (as of April 2019) is available at eric-schulte-cv.pdf.
** COMMENT publishing
This code is used to publish this page to the cs.unm.edu webserver.
For more information on publishing Org-mode pages see the Publishing
section of the Org-mode manual.
#+begin_src emacs-lisp :results silent
(setq homepage-dir (file-name-directory (or load-file-name buffer-file-name)))
(unless (boundp 'org-publish-project-alist)
(setq org-publish-project-alist nil))
;; the main html page
:html-postamble ; replaces the auto-generated postamble
This document is created
using <a href=\"http://orgmode.org/\">Org-mode</a>
and <a href=\"http://orgmode.org/worg/org-contrib/babel/\">Org-babel</a>.
The original plain-text document is available
at <a href=\"eric-schulte.org\">eric-schulte.org</a>
(<a href=\"eric-schulte.org.html\" title=\"how this document looks from inside Emacs\">preview</a>).
:style "<link rel=\"stylesheet\"href=\"data/stylesheet.css\"type=\"text/css\">"
:publishing-function (org-html-publish-to-html org-org-publish-to-org)
;; the contents of the data/ directory, css, images, etc...
:base-directory ,(expand-file-name "data" homepage-dir)
;; a single combined project to publish both html and supporting materials