Try this also: If you can get the car to idle well at your desired RPM with the IAC disconnected (ie: temporarily raise the idle to desired with the set screw), it probably means your computer is confused on how to run the motor and the surge is caused by the computer overcorrecting then under-correcting RPM with the IAC and/or spark, or the IAC is bad.
The computer controls idle using two methods: Spark advance/retard and airflow through the IAC. The method above troubleshoots air flow, the following troubleshoots spark: With the IAC disconnected, check the timing. If the timing bounces around, the computer is probably confused. Connect the IAC and check timing again, if it's bouncing around, again, the computer is likely confused. By bouncing around I mean by more than 4 degrees in either direction. If the spark does bounce try disconnecting the spout (locking the timing) and if you still cannot get the car to idle with or without the IAC connected, you probably have a vacuum leak. When looking to vac leaks, don't forget to look at the PCV system and the garbage in the passenger wheel-well.
If you are confused with what I tried to say, trying doing every combination and post your results. ie: spout connected/iac connected-check timing; spout disconnected/iac connected-check timing. ect. It may be a pain, but you can eliminate some possibilities and narrow in on others.
My guess is your idle is set too low or you have a vacuum leak somewhere. If you don’t have a vacuum leak, I’d guess the IAC is bad. Do you have an intake spacer? If so, check that. I just saw the ugliest intake manifold spacer the other day which caused a mean vac leak. It was so bad I'm surprised some spacer pieces didn't fall into the motor when it was removed. I don't know the brand, I'm guessing he bought it off of eBay.
Check to mkae sure your tps voltage is between .9-.99
That's a good rule of thumb, but the .9-.99 is an internet myth. The TPS should be under 1.02,. Everytime the car is started the computer looks for the lowest TPS voltage and uses it as a base. Within the programming you can set the voltage increase to where the computer sees part throttle. Stock is .03-.04 volts depending on the computer. So, if the lowest voltage was 1.02, the computer would sense part throttle at 1.05-1.06. 1.02 is still a rule of thumb, but you could go slightly higher and be fine. IIRC the computer flags the TPS as bad at 1.2 minimum volts. - Don't quote me on that, but I know it's far above the internet myth of .9.