Puzzles for Programmers and Pros by Dennis Shasha