Could also be a dirty idle air control valve. If it gets gummed up with carbon then it can't react fast enough and may overshoot and undershoot. Simply remove the valve from the throttle body and clean with carb cleaner. Also clean the air passage in the throttle body. Could be the intake gasket as well. See my post on how to check for a leaking gasket. just use some carb cleaner and spray around the intake. If there is a leak you should hear a change in rpm.