Learning to write different kinds of linux drivers - usb, terminals, etc.
Build a computer from ground up.
Learn what different common design patterns are. Where they are used.
Undergraduate Compilers Textbook