ICS-691: Topics in Software: Genetic Programming

Spring, 2004, University of Hawaii at Manoa, Information and Computer Sciences
Instructor: Prof. Lee Altenberg


This course is geared to get students as quickly as possible doing publication-level research in genetic programming.

Genetic programming is an approach to the automatic writing of programs based on Darwinian evolutionary dynamics. Since the early days Artificial Intelligence, it has been hoped that computers systems could be designed which automate the writing of programs. One approach that has developed within the "symbol processing school" of AI is the field of Automatic Programming, in which low level algorithms are deduced from a higher order specifications, a higher-order version of what compilers do. An alternative approach is based on heuristic search through the space of programs. One of these heuristics is evolutionary search, and this approach is known as "Genetic Programming".

In genetic programming, the user specifies criteria used to evaluate the performance of candidate programs. An initial population of programs is generated and evaluated, and a process of "selective breeding" is initiated: higher performing programs are selected for modification. These selected programs are modified to generate new programs by various operators that transform the data structures which represent the programs. The new programs are evaluated for their performance. This process is iterated to evolve programs that perform as desired.

This approach has been developed and elaborated upon over the past 12 years, and has produced significant results in a variety of domains. The techniques, theory, programming, and applications for genetic programming will be explored in this course. The product will be a research publication. Prerequisites: Discrete mathematics II, and C or LISP programming.

Students must be either 1) be competent programmers in a language of choice---Java or C are preferred (including its variants C++ or Objective-C), but Fortran or LISP are also acceptable; or

2) have sufficient mathematical and computational skills to be able to do a theoretical study, and this include linear algebra, stochastic processes, dynamical systems, and computer simulation.

In empirical studies, students will be coding Genetic Programming programs and measuring their behaviors. In theoretical studies, students would be forming models of the dynamics of Genetic Programming software and studying them analytically or numerically. Other kinds of research methodologies would also be welcome (historical, sociology of science, etc.).

Required Text: