I somewhat disagree with you about CS degrees. Though my data points are a bit dated. (And a couple academic CS acquaintances feel that there's are department level declines.)
But the standard curriculum I'm familiar with always includes courses where you need to use C, or similar low level languages, to write an OS, compilers, networking stack, etc. And at least one course focused on a system language as a pre-req for those. The push for more practical coursework I think is perceived to have come from industry, which generally would rather have someone who can string some python packages together to do something quickly than someone who's never touched python but can write a compiler or OS from scratch.
That said, I do think it seems like ML topics should fit into standard coursework (wasn't really a thing when I was in school - AI was maybe an occasional elective or grad topic). It seems pretty adjacent to parallel and distributed computing (don't remember if that was optional or required) and statistics, which was not precisely part of CS curriculum, but occasionally discrete math/algo/grammar track adjacent in practice.
But I have trouble seeing how that could fit into 3 years. It's hard to parallelize the intro series of courses that build up to the "fan out" to he higher level courses/reqs, (though maybe stats/ML intro could fit early) and once you hit the fan out, 3 courses take about 80/hrs a week for most of a semester. IMO if you're wanting foundational knowledge and not the "patch Python packages together" it's hard to compress.
One thing that is happening is non-CS degrees with weaker requirements to get to people skills, like BAs in technology and computing, that focus much more lightly on CS and just have a solid amount of "practical" coursework, e.g. "here's how to use the most common Python ML libraries and Django, BTW this would be a great thing to double major in with Bio."
While you are right, I think the evidence points to deficiencies in depth and breath.
There are plenty or published articles discussing why the mega-interviews became a thing when employers started to realize CS graduates could not develop software.
And then there's the H1B argument. If our educational pipeline is delivering people with solid skill sets, hiring H1B's should be rare because you could not justify it.
Better yet, given the cost of higher education in the US: Why are universities not graduating the absolute best professionals in the world? Every single H1B hire is one more data point in support of the idea that our universities are not doing a good job.
Before someone mentions pay, I looked around and there seem to be multiple studies indicating that H1B's are getting paid on-par with US workers.
Once again, if an H1B hire is justified, it means our universities did not produce candidates with competitive skill sets. Then, why are we paying hundreds of thousands of dollars for these degrees and financially enslaving people for decades?
While I can vouch for there being CS graduates who seem mysteriously poor at SW dev/engineering/programming, I also know a chunk of my graduating class never made it into a SW eng career despite having solid CS foundations.
IMO many of them suffered not from being poor at stuff like writing a compiler or foundational CS (because I think some of them were better than me), but not really having a way to translate those core skills to jobs that wanted specific skills that differed. I've had fine luck getting jobs in languages I've never used, but so far as I can tell (a) most people don't even try because they believe requirements are requirements, and (b) it's less and less common consider deviation from "requirements" okay, particularly without connections of some sort.
For non SW engineer engineers it seems worse - I know a good number who've ended up starting unrelated businesses (e.g. making furniture) because they couldn't find a job within a year or so of getting a degree. Or who got masters degrees just to work for $40-$60k a year for 5+ years before finding a way to get paid better.
I do not buy the H1B argument. While I think hiring remote foreigners is now widespread and often an even more economic alternative, I have, for my whole life, seen positions written to be excessively niche, posted in places where actual job seekers will ignore or not see, and applications rejected to hire H1B hires, whether for traditional engineers (chemical, mechanical, etc.) or SW developers. My dad used to enjoy pointing out job ads that weren't supposed to get applicants in papers and magazines.
That said, there's a large mix of H1B hiring types. But most of what I've personally seen and witnessed has not struck me as savory. Every shenanigan in the books gets used - label a SW eng role as "programmer" or "IT system tech" role, muddle whether the comparative pay does or doesn't include benefits valued correctly, reject applicants for inane reasons to get the more "perfect fit" non-American.
But the standard curriculum I'm familiar with always includes courses where you need to use C, or similar low level languages, to write an OS, compilers, networking stack, etc. And at least one course focused on a system language as a pre-req for those. The push for more practical coursework I think is perceived to have come from industry, which generally would rather have someone who can string some python packages together to do something quickly than someone who's never touched python but can write a compiler or OS from scratch.
That said, I do think it seems like ML topics should fit into standard coursework (wasn't really a thing when I was in school - AI was maybe an occasional elective or grad topic). It seems pretty adjacent to parallel and distributed computing (don't remember if that was optional or required) and statistics, which was not precisely part of CS curriculum, but occasionally discrete math/algo/grammar track adjacent in practice.
But I have trouble seeing how that could fit into 3 years. It's hard to parallelize the intro series of courses that build up to the "fan out" to he higher level courses/reqs, (though maybe stats/ML intro could fit early) and once you hit the fan out, 3 courses take about 80/hrs a week for most of a semester. IMO if you're wanting foundational knowledge and not the "patch Python packages together" it's hard to compress.
One thing that is happening is non-CS degrees with weaker requirements to get to people skills, like BAs in technology and computing, that focus much more lightly on CS and just have a solid amount of "practical" coursework, e.g. "here's how to use the most common Python ML libraries and Django, BTW this would be a great thing to double major in with Bio."