Edit: And thinking on it our computer graphics course was in C++ (yea yea C != C++).
I wrote c wrappers for ada, and it was a pain. Much easier to use C (or C++) to get to OS functionality.
As long as OS are written in C, it will be with us. Also useful for embedded.
see: /usr/include
My OS class (a while ago) used assembly language for a simple VM, with one or two assignments requiring us to modify the VM itself to implement new instructions required for new OS features (task switching, virtual memory, etc.).
Personally I did study C via a couple of electrical engineering courses I took.
While I imagine it was good to get familiar with writing C, even assignments for operating systems classes didn't have all of the performance concerns or strict checking that production code would, right? (but C still is probably the best choice for other reasons in an OS class)
I asked my professors why and they argued that Python "doesn't get in the way" (static typing, compilation etc.) allowing us to focus more on learning the algorithms and theory.
I still preferred C to Java. I'm sure Python would have made that class way easier, though I do love pointers.
"A pointer is a variable that contains the address of another variable." [1st edition, 1978]