Teaching kids to code (A) is like teaching kids to repair cars (B). It (B) serves a purpose when there are a lot of mechanical engineering issues in the world to be addressed... but the value of mechanical engineering in general decayed over time as it was superseded by more abstract technology. One day (A) will be highly automated or supervenient on other skills, and (A) too will fall out of favour.
If you go farther upstream (lower level) on what both A and B supervene upon, then you're looking at the ability to understand language in a technical fashion (semantics, syntax, representation, hard relations, and fuzzy relations) (C), and you're looking at applied mathematics and statistics in general (D).
(C) and (D) further supervene on comprehension of the rules of logic (E1), and metalogic, the nature of semantic cognition (E2), pure mathematics and probability (E1), and epistemology (E2).
The classical Greek aristocrat studied grammar, logic, and rhetoric as the three primary skills of 1%-ers. Liberal arts - the trivium. Followed by arithmetic, geometry, astronomy, music, the quadrivium.
The classic approach is not far off... but the disciplines have been mutated a bit. I would argue that now you want to replace that with linguistics, cognitive science, pure math (E1), and the arts. As for the application part... that's dialectics, i.e. what the philosophy department (E2) does in general. Everything else nowadays is downstream from that.
E1 is more applied, but it's as high up in abstraction as you can for for engineering purposes. E2 is ontological, and humanistic, concerning itself with HTF does E1 work... where did it come from... are we sure we have the best possible grasp of it... are there alternative grasps, and how do we compare them, etc.