> Lots of college courses, especially of the Java school variety simply do not cover anything remotely near low level code.
That's probably true for CS courses, but a lot of courses in my computer engineering undergrad years touched low-level stuff. The most relevant are the real-time systems, microprocessor architecture, and configurable processors courses. We had to unroll loops, reorder instructions according to data dependencies, and otherwise optimize assembly routines on paper during exams (based on a description of the architecture and the number of cycles for each instruction). Having learned that it's rather easy to pick up a book on whatever processor interests you and start writing.
That's probably true for CS courses, but a lot of courses in my computer engineering undergrad years touched low-level stuff. The most relevant are the real-time systems, microprocessor architecture, and configurable processors courses. We had to unroll loops, reorder instructions according to data dependencies, and otherwise optimize assembly routines on paper during exams (based on a description of the architecture and the number of cycles for each instruction). Having learned that it's rather easy to pick up a book on whatever processor interests you and start writing.