If you finish Singh's code book and want to tax your brain even more, go back to David Kahn's 1, 200-page The Codebreakers, a classic that came out in 1967 and was recently updated.
Adding predictive routines and arbitrary values allows for situation-specific code we might not get elsewhere, whether it's estimating the finish time of a marathon or guessing just how much post-run beer is possible before the guilt sets in.