CS 284: Seminar in Artificial Intelligence: Evolutionary Computation


Hampshire College, Amherst MA
Spring, 2001



Lee Spector, lspector@hampshire.edu
413-559-5352, ASH 201

Teaching Assistant

(check back)

Meeting times

Tuesdays and Thursdays, 10:30-11:50 AM


Adele Simmons Hall (ASH) Room 126

Class web page


Class email list



Evolutionary computation techniques harness the mechanisms of natural evolution--including genetic recombination, mutation, and natural selection--to automatically produce solutions to a wide range of problems. In this course students will explore several evolutionary computation techniques and apply them to problems of their choosing. The technique of "genetic programming," in which populations of executable programs evolve through natural selection, will be emphasized. The prerequisite for this course is fluency in either Lisp or C. A background in Artificial Intelligence (for example, CS 263 Artificial Intelligence) would also be helpful.

Expectations and Evaluation

This course has been designed to maximize student participation and interaction. There is no final project, and no portfolio of work will be required. In exchange for this, however, students are required to participate in several substantial and structured ways. On time attendance to every class is required. Several segments of the class will be devoted to presentations by groups of students--the details of this component will depend on the number of students in the class, but each student will probably participate in two of these presentation groups. Students will also be required to actively participate in the collaborative "code telephone" exercise described below.

Students will be evaluated on the basis of:

Consistently active participation is required to receive credit for a Division I two-course option. For five-college students the grading standards are {A=excellent, B=good, C=weak, D=marginal, F=fail}, with the three evaluation criteria having equal weight. (Five-college students may want to consult with the professors periodically for a grade-based performance assessment.


Code Telephone

Each student is responsible to produce a piece of code in generic Common Lisp, ANSI C/C++, or Java for any purpose by the first code telephone session. We will discuss and critique the code in class. Each piece of code will then be routed to a different student, who will have the responsibility of modifying the code to any effect by the next code telephone session. Modifications may be produced by augmentation, mutation, or crossover with other class code or code from other sources. All modifications, their authors, and code sources must be clearly indicated in the code.

Group Presentations

Several class segments will be devoted to presentations by groups of students. The groups and the assignment of topics will be determined in the first two class meetings. Presenting students will be responsible for presenting the material covered in the reading, and for orchestrating the discussion and/or other activities for the entire class segment..


This course will not follow a rigid, pre-specified schedule but will instead be paced to the progress and interests of the students. A basic sequence of possible topics and associated readings is presented below but some of these may be dropped and others may be added; changes will be discussed and announced in class.

Topic Read Before Class
course introduction, basic concepts of evolutionary computation and genetic algorithms Mitchell 1, Banzhaf 4
genetic programming

code telephone
Mitchell 2.1, Banzhaf 5

code telephone
Mitchell 2.2, Banzhaf 12
Push, PushGP, and Pushpop

code telephone
evolving neural networks

code telephone
Mitchell 2.3, Banzhaf 12.4.1
learning and evolution

code telephone
Mitchell 3.1, Banzhaf 1
sex and the ecosystem

code telephone
Mitchell 3.2-3.4, Banzhaf 2
schemas and royal roads

code telephone
Mitchell 4.1-4.2, Banzhaf 6.1-6.3
implementation and variations

code telephone
Mitchell 5, Banzhaf 9-11
genetic programming and quantum computation

code telephone

This page is maintained by Lee Spector and was last updated on August 31, 2001