One of the best academic decisions I've made as a student was to take a course on Operation Systems in C. I did take a beginners course in C previously so it was an intermediate class.
Nothing compares to spending hours and hours grinding through thousands of lines of C and building your own passable OS from a skeleton kernel. It was the hardest course I've ever taken in college and it was my favorite.
I can honestly say I'm a better programmer and engineer after that experience and would recommend anyone to take a course in OS (hopefully in C), and you'll know what I mean.