if the university purports to teach this stuff, they should hire people who actually know how to teach it. if their tenured PhDs aren't cutting it, they should look elsewhere. (this is how i got my university teaching job.)
It doesn't. The major purpose of a university is to produce scientists who do research, not software engineers who write crud apps. We, the software engineers, are just a byproduct.
> they should hire people who actually know how to teach it
They can't and they shouldn't. Why would one want to teach at a university when (s)he has enough skills to work at a company for a big fat compensation, and, possibly, equity? The only way to attract those people to the universities would be for the universities to offer much higher salaries, which would consequently drive up the cost of education (in my own country it wouldn't even work, because education is "free", i.e. mostly paid for by the government).
And for what - to teach the students something they could have easily picked up on their own by poking around the internets or participating in internships? That is not optimal.
If you study formal grammars in class and don't try writing your own little lexer/parser at home, it's your own fault, don't blame the university. It has taught you everything you need to know to write a parser, and it's your job to put it to use.