Personally I find computational self assembly an extremely powerful compelling idea. Anyway the good people at Iowa State university have some free self assembly tiling software for you to experiment with (ISU TAS):http://www.cs.iastate.edu/~lnsa/software.html
You create a set of tiles with different glue strengths on each edge. You then put a seed tile on the self assembly board and off you go. It's more fun that a lot of computer games (or anyway better than battleships).
The software is a little bit buggy because people still feel compelled to write software in C++.