&gt; The issue that many students face in learning low level C, is that they don&#x27;t learn assembly language programming first anymore, and they come from higher level languages and move down. Instead of visualizing a Von Neumann machine, they know only of syntax, and for them the problem of programming comes down to finding the right magic piece of code online to copy and paste. The idea of stack frames, heaps, registers, pointers are completely foreign to them, even though they are fundamentally simple concepts.<p>What about teaching C in the context of something like AVR programming, where you <i>have</i> to worry about those sort of things because there simply isn&#x27;t any abstraction on top? That was where I first encountered C and I think learning it in such a constrained environment helped me appreciate&#x2F;understand the utility of C a lot more.