And the reason is that hacking implies creating something that works, possibly in a clever manner, while computer science is concerned mainly with how to do things in general, and what the advantage of one approach is over another. Your typical hacker would rather write code, so you don't see them in CS classes.
Theoretical computer science is mostly about complexity of algorithms, P vs. NP, Turing machines, lambda calculus, formal language theory, etc. On the more practical side there is ofcourse software engineering, which attempts to better control the software creation process (so that you don't end up with 10 hackers in a room who all write something different and forget about the documentation, and never mind that the customer had something else in mind entirely). Software architecture deals with structural principles of software design, there is formal methods which is about proving things about programs (for example that they won't deadlock), embedded systems (hardware and software together), distributed systems, telematics, and lots of other stuff.
Perhaps the best idea is to have a look around the website of the CS department of a university, for example that of the CS department of the University of Twente where I study CS. |