A wonderful introduction to evolutionary computation, through the functional programming approach that has made Mathematica a key tool in this discipline, is provided in this book. It starts with a very readable introductory chapter, in which we are introduced to the fundamental issues of evolutionary computation, namely adaptation and selection, using a string of simple examples. The ideas in these examples are reinforced by illustrations, giving the author a vehicle to emphasize a theme of this book: Mathematica is a natural choice to perform these kinds of computations and to display the results. The initial Mathematica programs are elementary; a novice user will be able to follow the logic while becoming familiar with the fundamental elements of functional programming. The Mathematica programs are readily downloaded from the author's Web site, http://www.cpsc.ucalgary.ca/njacob. A wealth of animations are also available, which I found made the process of reviewing this text very enjoyable.
The book is divided into three parts. In chapters 3 and 4, which make up the bulk of Part 1, genetic algorithms and evolution strategies are presented. Students of biology will find this part of the book relatively easy to read, since so many of the analogies, as well as the terminology, are directly borrowed from this discipline. Mathematical analysis of the algorithms is not presented here, although examples are constructed to illustrate the formation of patterns, as well as strategies for optimization.
In Part 2 of the book, the main ideas related to evolutionary and genetic programming are presented. Some of the examples draw upon the author's package, Evolvica, a Mathematica based resource of HTML documents and notebooks. Evolvica is available from the author's Web site.
In Part 3, the author returns to the familiar domains of cellular automata and of pattern and structure formations. Some stunning displays of the success of the methodology advocated in this book can be found in chapters 9, 10, and 11.
This is an excellent candidate for a textbook for an advanced undergraduate elective course in biology. If combined with a mathematically inclined text, like Holland's 1992 book Adaptation in Natural and Artificial Systems [1], it could provide a much-needed resource for an advanced undergraduate course for students of mathematics and computer science.