We investigate the ability of a genetic algorithm to design cellular automata
that perform computations. The computational strategies of the resulting
cellular automata can be understood using a framework in which ``particles''
embedded in space-time configurations carry information and interactions
between particles effect information processing. This structural analysis can
also be used to explain the evolutionary process by which the strategies were
designed by the genetic algorithm. More generally, our goals are to understand
how machine-learning processes can design complex decentralized systems with
sophisticated collective computational abilities and to develop rigorous
frameworks for understanding how the resulting dynamical systems perform
computation.