AbstractSelf-Assembly is a powerful autopoietic mechanism ubiquitous throughout the natural world. It may be found at the molecular scale and also at astronomical scales. Self-assembly power lays in the fact that it is a distributed, not-necessarily synchronous, control mechanism for the bottom-up manufacture of complex systems. Control of the assembly process is shared across a myriad of elemental components, none of which has either the storage or the computation capabilities to know and follow a master plan for the assembly of the intended system. In this paper we present an evolutionary algorithm which is capable of programming the so called “Wang Tiles” for the self-assembly of two-dimensional squares.