How to think like a programmer program design solutions for the bewildered - Vickers, Paul, 1966- (Cengage Learning, 2009)