> I was a math/CS TA for several years, and I don't think the problem is with tough freshman classes, low grades or a focus on theory.
Eh. Math illiteracy is a problem, but I came into college having taken calc/physics/quantum mechanics, had nearly perfect math SAT's/SAT II's, etc, and I still hated engineering school.
I think engineering is just plain taught the wrong way. I'd say 80% of my classes were literally just the professor deriving some formula in some tortured fashion, doing a token problem, then going onto the next formula. This might be an adequate pedagogical style for a PhD candidate, but at the undergraduate level this just rewards the kids who have the longest attention span.
As a practicing engineer, you need to understand some of the origins of the formulas, sure, but more than that you need to see how the formulas work in practice, how they interact with each other, how they fit into the big picture. Professors give barely token attention to any of that. In fact it even goes beyond the theory/practice distinction. Playing with concepts and seeing how they interact, rather than laboriously grinding out every mathematical detail, is a great way to teach theory too!
The basic components of good communication are universal: you tell your audience what you're going to tell them, you tell them, and then you tell them what you told them. Engineering professors can be ridiculously inept at doing this, and it's no surprise people tune out and leave the programs.