CS education, C vs Python, and extending downward
- YT :: https://www.youtube.com/watch?v=ZKxq7lgqpIM
- Original title :: Your CS Degree Is Teaching You the Wrong Things | TheStandup
A Standup episode (Prime, Casey Muratori, TJ, Teej, Trash) reacting to Laurie Wired's claim that CS programs starting students on Python instead of C/C++ push them away from understanding computers. The crew mostly agrees, but reframes the argument: the language matters far less than whether it lets a teacher extend downward into memory, caches, SIMD, and threading without teaching a new language first. The real split is between fundamentals that stay true for 50 years and library/framework knowledge nobody will care about in 30.
The spat
Laurie Wired, a Google researcher, argued CS degrees are fumbling the bag by starting with Python rather than C/C++, leaving graduates further from the machine. The internet immediately turned it into a fight over what computer science even is - lambda calculus and formal languages, math proofs, or practical machine understanding. Casey's viral contribution was, in full, "100% yes. Thanks, Laurie Wired."
Casey's point: the original clip was diplomatic and hard to disagree with. She never said Python is bad; she said students need memory management and that it is easier to extend downward from something like C++. The pile-on was mostly people using a high-profile statement as a hook for whatever they already wanted to talk about.
Two kinds of CS degree
TJ wants the split math departments already have: applied CS vs pure/theoretical CS. Applied would optimize for employability - internships, partnerships with local companies, electives aimed at what people actually hire for. (Half-joking hot take: scripting Excel should be a full course; if you disagree you have never worked at a real company.) The counter-objection is that this collapses into a four-year boot camp - and boot camps drew exactly the same criticism ("you learned React but not JavaScript") that the C crowd now levels at Python-first curricula.
Prime pushes back on the whole framing: universities were never job-training. ME, CE and EE graduates learn finite element analysis and fluid dynamics and then never do them again. CS is unusual in that departments earn grant money on theory while being expected to produce practically useful graduates. Teej notes that in hiring, new grads were assumed worthless for a year - interviews probed data structures and algorithms precisely because practical skill was expected to be picked up on the job.
What actually stays true
Casey's central argument: for education, pick things that remain true. Learning a new language is nearly free for a competent programmer - he picked up Python in about five minutes for a Substack piece, needing only a pointer to idiomatic style. So agonizing over which language is taught is the wrong question.
By contrast, the claim that low-level knowledge goes stale because hardware changes is, in his words, completely false. SIMD, loop caching, virtual memory, atomics - the concepts have been in place since roughly 1970; only the interconnect diagram for your particular chip differs. What changed is that everyone now has the best of everything in a desktop or phone chip.
Extending downward
The virtue of C (or Rust, and arguably reading assembly rather than writing it) is that a teacher can say "here is how we make this cache-aware, here is how we thread it, here is an atomic, here is an intrinsic that packs a SIMD mask register" without the student learning anything beyond the language they already have. A high-level language forces you through its own coroutine or auto-vectorization machinery; if you only write shaders, the SIMT model hides vectorization from you forever. The point is not that C is what the computer really does - Prime notes paging and virtual memory mean C is also a lie - but that it is cheap to reach down from.
Cython, PyPy and friends can get you there from Python, but each is an extra step; C hits the sweet spot, which is why it has endured and why operating systems are written in it.
Where the panel lands
- Python is not a mistake. Starting high-level so students see something on screen and fall in love with programming is good; the mistake is stopping there. Several panelists' own path - Python or Java first, then data structures in C/C++ - is held up as the right shape.
- Casey would not defend teaching the "++" part of C++; modern idiomatic C++ is as transient as Python libraries.
- Teaching tildes and C++ ceremony early makes programming unfun and hands students a non-reusable skill - the worst of both.
- Teej's electrical-and-computer-engineering background gave him the durable payoff: the ability to look at code and know it will be slow, because there is no way for the machine to do that quickly. Language-independent, and it has served him for a lifetime.
- Prime's confession: he aced everything at MSU - could do register addition and barrel shifts by hand, could balance an AVL tree, could leetcode like a boss - but had exactly one shallow C course, and only realized years after graduating that he had been writing to the stack or the heap. He passed every exam and tied nothing together, and calls it a genuine failure of his education.
- Teej's counterpoint on the practical side: the collaborative senior-year project work, learning Git and how to build something with other people, was what actually transferred to the workplace.
The AI angle
Casey's kicker: in an age where you can program in English, doubling down on high-level languages makes less sense, not more. If you want high-level, use English. TJ agrees from the job-market side - agents will emit the Python, so the differentiating skill is being one of the handful of people at any company who can debug and optimize when things go wrong. Prime is more skeptical that low-level knowledge is the bottleneck in practice: most real debugging is not struct layout, it is nineteen microservices fanning one user request into four hundred internal ones - a decision-making problem that neither low-level nor high-level training addresses.