This document summarizes evolutionary computation techniques including genetic algorithms and genetic programming. It provides an overview of biological evolution and how evolutionary computation mimics this process to solve problems. Genetic algorithms use chromosomes to represent candidate solutions which are evolved over generations using selection, crossover and mutation operators. Genetic programming uses tree representations to evolve computer programs. The document describes how genetic programming can be used to evolve a program for a wall-following robot. It concludes by discussing applications and advantages/disadvantages of evolutionary computation.