@futurebird I think ‘learn to code’ is not quite the same as ‘learn mathematics’ or ‘learn English’. To me, it’s like learning to write or learning arithmetic. A few hundred years ago, we didn’t teach most people to read and write, and you’d hire a scribe if you needed something read or written. Some people opposed universal literacy on the grounds that there weren’t enough jobs for scribes. I see learning to program in the same way, it’s not that everyone should become a professional programmer it’s that most jobs (and many non-paid-work tasks) would benefit from some automation but not quite enough that it’s cost effective to hire a professional, enabling everyone to reach this level is useful. Just as everyone can write a shopping list, but not everyone can become a novelist, or everyone should be able to add a few numbers but not everyone can become a mathematician: the former skill is a prerequisite for the latter (well, maybe not arithmetic and mathematics, given some mathematicians I know).
Defining what should be on a Computer Science curriculum is much harder. As a young subject, I think most departments still believe that you can teach all of computer science in an undergraduate degree. You wouldn’t expect to do a physics or maths degree and learn the entire subject, you’d expect a very high-level overview and a deep dive into a few bits. Until computer science education is framed in that way, you won’t see a good taxonomy of knowledge and skills in the field.