bootloader uploading into Atmega328
The AVR pocket programmer should work fine. Sparkfun has a good guide for doing this.

Here's the pinout of the Atmega328:


You'll want to connect your programmer as follows (note, these are the pins for the bare Atmega328 chip only. The pin numbers on an Arduino board are different.):


Programmer Pin&#09;&#09;Atmega328 Pin
5V&#09;&#09;&#09;Vcc (7)
GND&#09;&#09;&#09;GND (8)
MOSI&#09;&#09;&#09;Digital 11 / Physical 17
MISO&#09;&#09;&#09;Digital 12 / Physical 18
SCK&#09;&#09;&#09;Digital 13 / Physical 19
Reset&#09;&#09;&#09;Reset (1)


Note that the physical pins on the chip are numbered differently than the logical pins. In the table above the "Digital" pin numbers are those colored yellow in the figure, while the "Physical" pins correspond to the black-on-white numbers around the edge.

If you already have the ICSP header connected to those pins (it's not completely clear in the schematic if that is the case), you can connect the programmer to those pins instead. This can be easy if you have a 6-pin ICSP cable with your programmer.

Also, if you are already powering your Atmega328 from some other 5V power supply you can omit the 5V-Vcc pin. However, the programmer and the Atmega328 must share a common ground, so be sure the GND pins are connected.

Connect your programmer to the computer using USB, open the Arduino IDE, select the correct serial port of the programmer, and pick "Arduino Uno" in the "Board" menu. You can program the bootloader by selecting "Burn bootloader" in the Tools menu, or you can simply write your program by selecting "Uploading using programmer" in the File menu.