Revive your Arduino - ISP Programming
Summary
A handy tool to have in your Arduino Kit is an ISP programmer. Aside from giving you a faster way of programming your Arduino Boards, an ISP programmer can also be used to reprogram a faulty bootloader (which may be preventing sketches from being uploaded), or even install a new bootloader with new features. Programming with ISP bypasses the bootloader, so it might allow you to squeeze a few more bytes of program storage into your sketch.
Alternatively, if you're looking a branching out away from prototyping with Arduino boards, and want to use a standalone IC like the ATMega 328P, you can use ISP instead of designing a USB-serial converter into your circuit.
You might not know it, but the USB-Serial converter IC on Uno and Mega is actually a ATMega16u2- the smaller brother of the ATMega32u4 on the Leonardo board, and this can be reprogrammed by ISP too (but be careful, as you might accidentally disable its USB-serial function).
Because all the Arduino boards have a 6-pin ISP header, we'll also need a 10-pin to 6-pin adaptor to connect to the 10-pin connector on the ISP programmer.
Similar projects you may be interested in