Steve Yegge has a recent post on the importance of compilers in a computer science curriculum.
"One reason many programmers don't take compilers is that they've heard it's really, really hard. It's often the "capstone" course of a CS program (OS often being the other one), which means it's a sort of "optional rite of passage" that makes you a Real Programmer and puts hair on your chest, regardless of gender or chest-hair preference."
"Designing an effective undergrad CS degree is hard. It's no wonder so many ivy-league schools have more or less given up and turned into Java Certification shops."
Sad but it seems this is true. Compilers course is very hard and I know it damn well, having taken this under Prof.Wei Chung Hsu in my Masters at the Univesity of Minnesota. We designed a small compiler for a language appropriately named C-- ; Our compiler could produce MIPS assembly language instruction set , which we would optimizie in the final phase for reducing redundant loads and stores , which we would then run though a MIPS simulator(SPIM, I believe) for execution.
In fact, one reason I took the course was that I wasn't happy with the way compilers was taught in my Bachelors, and I knew that I would never get a chance to learn them again in my professional life.
If some Software Engineer/CS student understands compilers, I would rate him very highly.
The only courses tougher than compilers at University CS programs are the ones dealing with Complexity Theory, Turing Machines and automata theory.