It is a famous result from mathematics that the most efficient way to pack spherical particles is to stack them in layers, like oranges in a box. Another result, less well-known, is that microscopic plastic spheres (colloids) will form the same ordered structure spontaneously, on immersion in a simple mixture of chemicals. This is an example of self-assembly: no energy is used up and individual particles are not manipulated by hand, but an ordered product is assembled. Furthermore, these systems are simple enough that the forces between the particles can be calculated theoretically and the systems simulated in computers. Self-assembly is also relevant in many other contexts, including biology. There, complicated biological molecules come together and form ordered structures that might might be essential for life (for example, microscopic filaments that give cells their shape) or might cause disease (for example, viruses). Inspired by these biological systems, proposals have been made to use self-assembly in nanotechnology, building novel solar cells or computers. However, while these ideas are exciting, the problem in designing such self-assembled products is one of control. The biological systems can assemble into complex functional structures but the interactions between the particles are complicated and it is not easy to design and build similar systems for our own specific purposes. On the other hand, simple spherical colloids can be controlled accurately but can only be used to make stacked layers of spheres. Recently, an important step was made: by making colloids with different shapes, new ordered structures could self-assemble: not stacked layers but clusters and strings of particles. The new particles are called "locks" and "keys" because of the way they fit together as they assemble. This proposal will use computer simulation to explore the self-assembly of these lock and key particles. As in the spherical case, the fundamental physics are understood, so we can use computer simulations to predict and explain the results of experiments. In particular, we will investigate the range of structures that might self-assemble, both with existing lock and key particles and with other similar particles that might be made in the future. In this way we aim to guide future experiments in this area, and look into possible technological applications of lock and key systems. More generally, by starting from a relatively simple system of colloidal particles with different shapes, we aim to develop guiding principles that can be used more generally in designing and controlling self-assembly. If a system might form several different structures, how can we select one out of the many choices? Is it easier to assemble flexible structures or rigid ones, and how might this flexibility be controlled? Can we design structures that can still assemble even if their shapes are imperfect or slightly different from each other? Such questions occur in many different self-assembling systems: by investigating them in the relatively simple context of lock and key particles, we look for insight that might one day be used to mimic or disrupt biological assembly, or to build nano-scale products of machines.