The theoretical "core" of a CS degree would consist of (1) basic data structures and algorithms, (2) formal languages, automata, complexity, computability.
For the first, "CLRS" is the most-used textbook: http://mitpress.mit.edu/books/introduction-algorithms
For the second, Sipser: http://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/113318779X
On the more "applied" side there is systems, programming languages, and of course experience with coding. Systems includes for instance operating systems and compilers. The dragon book might be a classic but I would guess overkill for what you're looking for. The best way to learn OS or compilers might be to just take a class in it; I'm not sure if there are "canonical" textbooks. For a textbook that hits lots of these basics, though, SICP comes highly recommended and is free online: http://mitpress.mit.edu/sicp/ . If you are interested in learning more programming languages and seeing variety, I would look up "Learn You a Haskell For Great Good" and SICP as mentioned above. For the theoretical side, maybe something like Pierce's "Types and Programming Languages"?
I would not spend time and money on language-definition or tutorial books like "The C programming language". I'd learn and practice programming online instead. Sites like topcoder's algorithms contests, SPOJ, and projecteuler provide good practice and you can find tutorials to get you going.
There is also some mathematics background, but you can go far on very little: linear algebra, calculus, hopefully some practice with probability and combinatorics.