How to Design Programs
The First Edition is still available!