That is absoluteley not limited to China. There are some CS grads that can't write code, and that doesn't mean they are idiots. I studied with some of them. Some are actually more inclined to abstract theoretical problems and are not very good at implementation. Others just learn by memorizing everything and never gotten the hang of analyzing and solving a problem.
>> Apparently it’s all theoretical
Well... yes, for me that is what CS really is about. You don't need a computer to do CS at all. All you need is a pen, a paper and some knowlegde of formal systems. In my opinion, a college/university is not the place to go to for learning how to code.
I am sympathetic to the idea that CS is not a vocational subject, but it is a practical discipline. Purely theoretical CS is like studying physics with without ever performing an experiment. There is a role for theoretical physicists, but to complement and inform the experimental side otherwise their theories could never be tested or confirmed. You need both to make it a complete discipline.
The one mitigating factor is that the commercial sector is so savagely results driven that actual success really matters. That’s the one thing that stops the whole system devolving into a soviet style downward spiral of bureaucratic failure. Ruthless social and economic Darwinism has it’s costs, but at least it keeps some aspects if the system honest by pure necessity. I doubt state sponsored research and academia benefits much from this, but I don’t have any direct experience of that as none of my relatives are academics.
We have a family friend who is a university lecturer in CS. The one anecdote I can pass on is that, apparently, students there can graduate in CS on a course based on Java at his institution without ever having to demonstrate a program actually running. Apparently it’s all theoretical. I find it hard to believe or understand how that can be, or how prevalent that is but that’s what he said. This was 3 or 4 years ago.