Self-assembly is the process by which objects autonomously assemble into complexes. It is believed that self-assembly technology will ultimately permit the precise fabrication of complex nanostructures. Of particular interest are self-assembly systems that are highly programmable. That is, we can view a self-assembly system as analogous to a program, the...