programming book by Dennis Ritchie
It is recommended that after learning the basics ,you should make atleasst 100 small programs in C of output and pointers,thats the best way.
Principles of Compiler Design Textbook by Alfred Aho and Jeffrey Ullman
Theory of computation:
Introduction to Automata Theory, Languages, and Computation
Textbook by Jeffrey Ullman and John Hopcroft.
Michel Sipser book read it only for for Un-decidability, Recursive and Recursively Enumerable languages
Internals and Design Principles Book by William Stallings
Operating System Concepts
Book by Avi Silberschatz ,galvin(scheduling, synchronization, memory management).
Attempt problems in Stallings they are very important especially problems on memory management and virtual memory.
Computer network :
Computer Networks Book by Andrew S. Tanenbaum,Tanenbaum book is best for data link layer,network layer,transport layer.Solve all the exercise .
For application layer read kurose and rose.
Digital logic :
Digital Logic and Computer Design Book by M. Morris Mano
Introduction to algorithms Thomas H coreman.
Data structures and Algorithms – Aho, Hopcroft, Ullman
A Quantitative Approach – Hennessy and Patterson.
Database System Concepts Textbook by Avi Silberschatz, Henry F. Korth, and S. Sudarshan
Also read wikipedia directly ,has good examples on normal forms.
Kenneth Rosen :Concepts are well explained and there are lot of problems for practice after each topic in a chapter.
You may want to try Discrete mathematics by K.D Joshi for enumerations and derivations.Its unique and helpful ,if you can get proofs to understand,you will be more comfortable in problem solving.
In limited time,read from wikipedia directly,understand the concept with the given example,try to understand the proof given.And after that you can go straight to problem solving.A distinct but effective way.