I think a lot of it has to do with an academic identity crisis. My degree was a strange mish-mash of purely theoretical stuff and purely engineering stuff that felt more like a set of topics ABET wanted covered rather than a path towards either deeper Computer Science or Software Engineering.
What I'd love to see is schools begin to take on various career-track options for students. Like theory and want to go to grad school? Take the theoretical track. Interested in front-end and mobile dev? Take some in-depth classes that cover fundamentals in that area. Distributed Systems? That could have oodles of classes, too. This is the way many other engineering degrees are structured. Somehow we're in this weird position where we're making students take electives which are relevant to industry so they can go get a good job, but they still have to learn how to write turing machines on paper.
True, except we have a lot of degrees that produce "mechanics"—the various engineering degrees. And we have an organization (ABET) that makes sure schools teach the right stuff.
Accreditation organizations being the solution only holds if you accept the premise that a four-year degree with any course material is necessary to be a successful developer -- if that were true, figuring out what the right stuff to teach in that four years was would certainly be the challenge. But while I share a lot of people's skepticism of bootcamps, I personally haven't seen much evidence that that's true.
That's a good point, I had not thought of that. Personally I think two years of studying and projects is good enough, maybe one if it's a bit intense like a bootcamp. The problem is people's prejudice against anything that is not a four year degree.