For Practical aspects: Code Complete by Steve Mcconnell.
For overall understanding of the Computer as a holistic system of abstractions: Structured Computer Organization by Andrew Tanenbaum.
Any book on Algorithms/Data Structures; Robert Sedgewick's books are recommended.
The above should give you a good foundation. You can then move onto in-depth study of each layer/abstraction eg. Languages/OS/Compilers/Networking etc based on your need/job.