Building Nanoscale Architectures by Directed Synthesis and Self-Assembly