There are many spectacular examples of collective behaviors in nature, ranging from the coordination of cells in a body to colonies of ants and bees to the whole ecological system. In many engineering applications such as molecular programming, swarm robotics and networking, it is also required to control complicated collective behaviors using simple rules. One major challenge is to create a robust system since every unit is only loosely controlled. Performing error correction in such systems requires techniques different from the traditional methods since there is no centralized computation. In systems with collective behaviors, errors much be detected and corrected locally. In this talk, I will describe error correction methods in a collective behavior system called self-assembly. Self-assembly is the process where simple unit assemble into large, complex structures by themselves using simple local primitives. I will also describe a general framework on testing the validity of such error correction designs and future research directions.