Since von Neumann's seminal work around 1950, computer scientists and other
s have studied the algorithms needed to support self-replicating systems. M
uch of this work has focused on abstract logical machines (automata) embedd
ed in two-dimensional cellular spaces. This research was motivated by the d
esire to understand the basic information-processing principles underlying
self-replication, the potential long-term applications of programmable self
-replicating machines, and the possibility of gaining insight into biologic
al replication and the origins of life. We view past research as taking thr
ee main directions: early complex universal computer-constructors modeled a
fter Turing machines, qualitatively simpler self-replicating loops, and eff
orts to view self-replication as an emergent phenomenon. We discuss our rec
ent studies in the latter category showing that self-replicating structures
can emerge from nonreplicating components, and that genetic algorithms can
be applied to program automatically simple but arbitrary structures to rep
licate. We also describe recent work in which self-replicating structures a
re successfully programmed to do useful problem solving as they replicate.
We conclude ty identifying some implications and important research directi
ons for the future.