The study of the genetic basis for evolution has flourished in this century, as well as our understanding of the evolvability and programmability of biological systems. Genetic algorithms meanwhile grew out of the realization that a computer program could use the biologically-inspired processes of mutation, recombination, and selection to solve hard optimization problems. Genetic and evolutionary programming provide further approaches to a wide variety of computational problems. A synthesis of these experiences reveals fundamental insights into both the computational nature of biological evolution and processes of importance to computer science. Topics include biological models of nucleic acid information processing and genome evolution; molecules, cells, and metabolic circuits that compute logical relationships; the origin and evolution of the genetic code; and the interface with genetic algorithms and genetic and evolutionary programming.