#+TITLE: Dr. Eric Schulte
My work treats software as an evolved system and yields novel
solutions to difficult software engineering problems. In my
dissertation, I have developed systems that automatically fix bugs in
off-the-shelf software, patch exploits in closed source binaries,
generate diverse implementations of a software specification, and
reduce the energy consumption of benchmark programs by 20% as compared
to the best available compiler optimizations.
See my Research Statement for more information.
- 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 (to appear, draft)/
(PDF, Bibtex, Blog post)
- Deborah Katz, Jason Ruchti, Eric Schulte
_Using Recurrent Neural Networks for Decompilation_
/Software Analysis, Evolution and Reengineering (SANER) 2018/
- 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. _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, 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, 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)
- Eric Schulte, Zachary P. Fry, Ethan Fast, Westley Weimer, Stephanie
Forrest. _Software Mutational Robustness_ /Genetic Programming and
Evolvable Machines 2013/ (arXiv, Springer, PDF, Bibtex)
- 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)
- 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 ranges from large open-source projects to small
- Babel adds /literate programming/ and /reproducible research/
functionality to Org-mode, a major mode of the Emacs text editor.
- Emacs Starter Kit is a structured extensible default configuration
for Emacs implemented using literate Org-mode files.
- 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
- 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
- DELTA-DEBUG is a Common Lisp delta debugging implementation.
- GRAPH is a Common Lisp library for graphs manipulation and analysis.
- 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.
- tracer is a simple =ptrace= based utility for tracing the execution
of x86 assembly code.
- ONCs is a prototype fully distributed lisp virtual machine.
- gpolygon is a toy steady state genetic algorithm which matches
polygons to images. It runs entirely in the browser making heavy
use of the HTML5 canvas element.
** 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 the summer of 2014) 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