How to Design Programs: an Introduction to Programming and Computing - Matthias Felleisen (Prentice Hall of India)