CS 572 Evolutionary Computation 4 cr.  (4-0-0)

This course is an introduction to a class of algorithms based on the long term design process of natural evolution.  It covers the major operators of Darwinian selection, variation, and recombination and how these can be applied together to solve problems in search, optimization, and machine learning.   The course covers both practical implementation and application to real-world problems as well as current theoretical results.  The course includes an overview of the major types of evolutionary algorithms and application areas, including genetic algorithms, evolution strategies, genetic programming, artificial life, artificial immune systems, learning classifier systems, evolving neural networks, co-evolution, and evolutionary robotics.  A project will focus on using the best evolutionary approach, efficiently implemented on parallel hardware, to solve one challenging problem such as multi-objective optimization, engineering design, human-competitive game AI, or an open problem in NP-Complete.