I've used Garlikov's Socratic approach to rave reviews: http://www.garlikov.com/Soc_Meth.html