picsquirt board mounted up The picsquirt is a simple cheap (less than £10 parts cost at the prices manchester university pay) usb pic programmer designed by me (peter m green,plugwash) it was built at the request of one of my lecturers to the following requirements

1: program the 18F452 and 18F252 (as that is what the uni tended to use) and the usb pics (so one PICSQUIRT could be used to program another)
2: use USB (since paralell and serial are fast dissapearing)
3: be cheap in terms of parts cost.
4: be constructable by students.
5: be used as an in circuit programmer with the same connector as the ICD2

the device uses a PIC18F2550. A 2455 should also work and was used in early prototypes but turned out to be unavailible from our regular suppliers. If you are building your own board and you don't care about size you could also use a 4455 or 4550. A max662 is used to generate the programming voltage.

some other pics were added later and the supported targets are now

PIC18F452
PIC18F252
PIC18F458
PIC18F2550
PIC18F2455
PIC18F4550
PIC18F4455
PIC18F2520
PIC18F4520
PIC18F4620
PIC18F2620
PIC18F4525
PIC18F2525
PIC18F8722

download links
software firmware and microchip usb driver
schematic (pdf)
layout (pdf) (darker lines are top layer, note that the layout is for a molex RJ12 connector with the contacts at the bottom and the tab at the top)
build instructions written for students building from a kit (word doc)

most component values are marked on the schematic, those capacitors that aren't are 220nf if shown as unpolarised and 4.7uf if shown as polarised. All unpolarised capacitors are ceramic all polarised capacitors are electrolytic.
I also have all the data files used to make the PCB and can provide them on request but unfortunately it was done in altium DXP 2004 so unless you have access to that software you'll have to redo it.

note: when programming pics that have low voltage programming enabled you may experiance programming problems if PGM is not tied low. I belive (havn't tested myself) that the soloution is to put a schmitt buffer powered by 12V on the VPP output but this would greatly increase the board size and build effort.