From my perspective at CMU, Engineers here tend to learn processes and heuristic approaches to problems. Computer Scientists are forced to learn to do things with almost no heuristic guidelines whatsoever. The net result is less likelihood of experiencing a problem in real life and saying "I can't do this, I didn't take that class!" which happens all the time.
Beyond that, there's a heavy emphasis on the nitty-gritty technical stuff like writing an operating system and implementing malloc and even buffer overflows. You really go all the way down to system architecture basics and all the way up to functional programming/algorithms/logic/etc. I think the breadth is very helpful in that it gives you a big "tool kit" for when you need to attack much more specific problems later in life.
> The net result is less likelihood of experiencing a problem in real life and saying "I can't do this, I didn't take that class!" which happens all the time.
With all due respect that is the kind of attitude I wouldnt expect in an Engineer (and possibly see in a CS graduate). It probably depends largely on the course.
I was taught5, in a very techncal way, how to approach a problem you have no experience in (in fact this was the third lecture of my first semester - and they ground it into use over the course of the following year). I'm perfectly happy being thrown ASP code (for example, never coded in ASP) and told to fix it because of that.
The system architecture stuff is what I am missing; and it's been a bit tough to catch that up. Luckily it;s not been essential so far but I can see where it might become a problem in the future.
At the end of the day I guess it comes down to which approach syncs more with you as an individual - and where you think you can gain the most help/skills.
Beyond that, there's a heavy emphasis on the nitty-gritty technical stuff like writing an operating system and implementing malloc and even buffer overflows. You really go all the way down to system architecture basics and all the way up to functional programming/algorithms/logic/etc. I think the breadth is very helpful in that it gives you a big "tool kit" for when you need to attack much more specific problems later in life.