I've spent this entire year taking a break to learn fundamental CS(I'm not a CS graduate)
Here are the books I found most useful/interesting:
1. The Annotated Turing by Charles Petzold : Used it because I had a hard time digesting the original Alan Turing paper
2. An Introduction to Formal Languages and Automata by Peter Linz : To grab the concept of state machines
3. The description of sequential processes by Iverson
4. Clrs: Have kept it for reference
Then I studied a matrix of math books, along with other CS books regarding compilers, operating systems etc. My aim was to get good enough understanding to comfortably digest the famous research papers.
I am yet to find definitive books that teach a way of thinking on their own merit as a single book. Cs like others is a matrix of knowledge that clicks as a whole 'chunk' of understanding, changing the way you have thought about things like programming in general. I'm having a hard time explaining this.
If you're not a CS graduate, I highly suggest simply going through academics of places teaching theoretical CS.
Then I studied a matrix of math books, along with other CS books regarding compilers, operating systems etc. My aim was to get good enough understanding to comfortably digest the famous research papers.
I am yet to find definitive books that teach a way of thinking on their own merit as a single book. Cs like others is a matrix of knowledge that clicks as a whole 'chunk' of understanding, changing the way you have thought about things like programming in general. I'm having a hard time explaining this.
If you're not a CS graduate, I highly suggest simply going through academics of places teaching theoretical CS.