Try this first. It worked on mine.
Close all the vehicle doors.
Insert the ignition key into the ignition lock cylinder.
Press and hold the DOOR unlock switch.
While holding the DOOR lock switch in the unlock position, cycle the ignition ON, OFF, ON, OFF.
Release the DOOR unlock switch. The doors will lock and unlock to confirm the program mode.
Press and hold the LOCK button and the UNLOCK button simultaneously on one keyless remote. After a delay of approximately 15 seconds , the doors will lock and unlock to confirm the programming of that transmitter.
Repeat the previous step to program up to four transmitters.
Turn the ignition switch to the RUN (one more click forward) position in order to exit the keyless entry transmitter mode.
Operate the transmitter functions in order to verify correct system operation
There you go!
UPDATE #1: After messing around with a couple of Key Fobs, I noticed that most owner’s manuals have the programming directions already. Check your owner’s manual first!
I will try to post a how to on programming keys.
UPDATE #2: I have tried this on a 2001 Grand Prix GTP and 1999-2002 Grand Am GT
UPDATE #3: This only works for some GM vehicles from 1996-2005.