Thinking about computer programming - Smith, Steve (Hyderabad University, 2000)