My research interests lie in genetic programming and program synthesis, and focus on algorithmic improvements to genetic programming. My dissertation explored the effects of parent selection on performance and diversity when using genetic programming for general-purpose program synthesis. Other recent projects have included adding epigenetic markers to genetic programs, automatically simplifying programs as a post-run improvement technique, and using graph databases to explore program ancestries.
The long-term goal of my research is to use genetic programming to perform software synthesis, where the user provides test cases for a function or piece of software they need, and genetic programming writes code to pass the tests. This technology could have applications ranging from programmer assistants to programming education, and in the long term could potentially be used to write the code used in many software applications.
I have contributed significantly to the Clojush codebase for my research. Clojush is the Clojure implementation of the Push programming language and genetic programming system. Push is a stack-based language that is designed for use in genetic programming.
Links of Interest
- Push, a stack-based programming language I use for genetic programming.
- The Push Language Discourse, a site with information, tutorials, and discussion related to Push.
- My GitHub page
- My GitHub fork of Clojush, the Clojure implementation of Push.