Think Java: How to Think Like a Computer Scientist
Allen Downey & Chris Mayfield (computer Scientist)