One of the nice aspects of Arduino compatible hardware is the ease of program downloads. This is, in part, due to the bootloader that is programmed into the controller. How does that bootloader get on the hardware in the first place?
One answer is that a second Arduino can be used to load the bootloader (or any other stand-alone code) into the ‘virgin’ target hardware. The Arduino IDE includes an example program called ArduinoISP used for this, but it helps to have some supporting hardware. I built a shield with a few connections that speeds up the process of programming controllers.