@futurebird I think that's a very good point. I would blame this on CS being young, and on an inherent tension between "teach people to code (vocational) because it's useful" and "teach people to code (principled) because it's important knowledge", so to speak.
I do think there's a bit of a curriculum for the latter: automata, language hierarchy, TMs, important limits of computation (halting problem, Rice's theorem), space and time complexity, compilers, interpreters... but it's probably hard to do this in pre-uni? Though I'm always a bit sceptical about that sort of thing too, back when calculus arose people thought it was too difficult.