For a truly deep read, I'd suggest Douglas Hofstadter's Gödel, Escher, Bach. He dives pretty deep into many of the issues that programmers face every day- recursion, verifiability, proof, and boolean algebra. Great read, a little off the beaten path, occasionally challenging, and extremely rewarding once you fight through it and process what you've read.