Much of the fundamental work on the problem of assembling genomes from short reads is based upon a structure called a de Bruijn graph and finding an Eulerian path in this graph. In this review paper, we describe this approach and detail how it has been applied to genome assembly algorithms.