> If you don't understand C, C++, or one could argue Rust these days you're sitting at an abstraction level much higher than where the "systems" domain tends to be. ABI, cache misses, page tables and memory mapping, restrict, all of that stuff is at an arm's length in a managed language.
To me, this is a bit muddy:
Yes, when doing systems level development, you need to understand the system you are targeting. Not all CPUs have a concept of cache misses or page tables. At my uni this was taught through computer architecture and operating systems classes.
These courses incidentally also included C, though they didn't need to. The reason that did was because they were precedents for the compiler course and prepared the students to understand compilers (I TAed in said courses). Later courses at my uni would be algorithms engineering that taught students how to make, well, cache aware implementations.
Understanding how a given hardware architecture works on how to most efficiently utilise it has nothing to do with C / C++. Many courses at most (European?) universities will happily teach you everything you need to know, but C / C++ are probably not even mentioned in the teaching material.
Actually, I just checked: https://kursuskatalog.au.dk/en/course/117933/Computer-Archit... and no: No mentions of C or C++
So I do understand you would be disappointed if you went for courses on C / C++.