On Friday, August 31, 2018 5:20:08 PM MDT H. S. Teoh via Digitalmars-d wrote: > A consequence of this disconnect is that the incentives are set up all > wrong. Professors are paid to publish research papers, not to teach > students. Teaching is often viewed as an undesired additional burden > you're obligated to carry out, a chore that you just want to get over > with in the fastest, easiest possible way, so that you can go back to > doing research. After all, it's the research that will win you the > grants, not the fact that you won teaching awards 3 years in a row, or > that your students wrote a glowing review of your lectures. So the > quality of teaching already suffers.
The are plenty of cases where the teachers actually do an excellent job teaching the material that the courses cover. It's just that the material is often about theoretical computer science - and this is actually stuff that can be very beneficial to becoming an excellent programmer. However, many teachers really aren't great programmers. They aren't necessarily bad programmers, but unless they spent a bunch of time in industry before teaching, odds are that they don't have all of the software engineering skills that the students are going to need once they get into the field. And most courses aren't designed to teach students the practical skills. How that goes exactly depends on the school, with some schools actually trying to integrate software engineering stuff, but many really don't. So, even if the schools do an excellent job teaching what they're trying to teach, it still tends to be on the theoretical side of things. But that may be improving. Still, the theoretical side is something that programmers should be learning. It's just that it isn't enough on its own, and it serves more as a good foundation than as the set of skills that you're going to be using directly on the job on a day to day basis. The school I went to (Cal Poly, San Luis Obispo) at least tries to focus on the practical side of things (their motto is "learn by doing"), and when I went there, they even specifically had a Software Engineering degree where you had to take a year-long course where you did a project in a team for a company. But at least at the time, the big difference between the SE and CS degrees was that they required more classes with group work and fewer theoretical classes, and there certainly weren't any classes on something like debugging. The software engineering-centric classes focused more on a combination of teaching stuff like classic design patterns and then having you do projects in groups. And that was helpful, but it still didn't really prepare you for what you were going to be doing in your full-time job. It's still better than what a lot of schools do though. I'm frequently shocked by how little many CS graduates know when they first get out of school. - Jonathan M Davis
