I think the problem is that no teacher has the time to babysit a student. If they just don't care about their education or can't put the time in, they shouldn't be wasting their time and money.
Some students also just don't have the aptitude for an Engineering or Computer Science degree. It's better for everyone if this is figured out early. I know plenty of people that dropped out of a Computer Science degree because they hated it or thought it would be a great way to make money and were in over their head.
We had classes that were for 'weeding out' students in Computer Science. They involved calculus because if you couldn't pass this class, you wouldn't be able to handle the 5 or so classes after this class that required it.