How To Think Like A Programmer by Paul Vickers & Paul. Vickers