>>123
It should always center around the mission of the software project that you're doing. If your mission is to support the progress of GNU Hurd into a practical system, then you'd study driver development and OS development. If your mission is to write computer games for desktop machines, then you'd study game programming techniques and various mathematical subjects.
I go my university library and spend time looking at the different subjects. OS design is an interest for me so I've spent my time studying OS design.