init_is_evil
All proper CS programs have the usual Discrete-Mathematics, data-structures & algorithms and a course in logic/computability.
I do think that there is value in courses were there is a real project actually much more value than the pure theoretical ones even through strictly speaking they are less about Computer-Science.
The courses that I would have listed that are not normal required classes would be:
Compilers: Similar to Modern Compiler Implementation in ML
Operating-Systems: Often OS-classes does not get the love they deserve.
Cryptography + abstract-algebra: Many good resources.
(elective) Computer-Graphics: Controversial, but from all fields I have seen no area/industry utilize as much computer-science theory as Computer-Graphics, from Computational-Geometry to Computer-Architecture. Having a hard Computer-Graphics course really changed me both a Computer-Scientist and a Software-Engineer.