&quot;In my mind, CS education should start by teaching problem decomposition and performance analysis using a language like Python that provides high levels of abstraction and automated memory management. Then, just like assembly language was a required CS core course back in my day, students today should spend a semester implementing and measuring the performance of some of the data structures that they have been getting &quot;for free&quot; so that they understand computing at a fundamental level. Some will go on to be systems programmers, and will spend more time at the C level. Some won&#x27;t ever look at C again, and that is OK.&quot;<p>I agree with that. I&#x27;ve proposed it myself. I&#x27;ll add that I prefer them starting with a more type- and memory-safe, but low-level, language like Component Pascal so they can learn low-level thinking but appreciate safety features &amp; good language definitions when they learn C afterward. One can emulate a decent bit of that in C and HLL that compile to C. Maybe they&#x27;ll remember enough to make something valuable.