Evolutionary algorithms have been gaining increased attention the past few years because of their versatility and are being successfully applied in several different fields of study. We group under this heading a family of new computing techniques rooted in biological evolution that can be used for solving hard problems. In this chapter we present a survey of genetic algorithms and genetic programming, two important evolutionary techniques. We discuss their parallel implementations and some notable extensions, focusing on their potential applications in the field of evolvable hardware.