Longinthetooth: I have many discussions about what is learned in engineering in University and what is learned in engineering technology programs at colleges. Colleges are more industry applicable, you learn the actual codes that industry uses. And colleges teach the computer programs that industry uses. Engineering is more theoretical, they wouldn't teach NPSH at university, the same as they wouldn't teach ASME code. What they would teach is the thin shell theory that ASME pipe wall thickness is based on.
You go to University to learn how to learn, not to come out and be immediately useful (unless you had co-op terms, then you may be a little useful). And I think that is because it's just too broad of a field. For instance I have used ASME and API codes when I was in piping, but then have switched directions and now use ASHRAE and SMACNA etc for HVAC. But I have a friend from the same program and he designs the buttons on cellphones. I have no idea what codes (if any) he uses for his job.
If Universities were expected to prep all their students with the basic design codes in all industries, as well as prep them for masters degrees and every other potential career eventuality the bachelors degree would be years longer than it already is. I think they just took the hit and stuck with teaching the basic theories that support a broad area of careers and let engineers learn their individual jobs under the tutelage of mentors in the work force. Let's face it, you can't learn everything to be a great engineer from a textbook anyway!