Writing a Compiler in 24 Small Steps [pdf]
scheme2006.cs.uchicago.edu
scheme2006.cs.uchicago.edu
Then everyone with a cs-degree must be immortal.
It's really a shame, because learning about compilers applies all that stuff you're supposed to learn about languages and automata theory, gives you an excellent example of how to design a large software system, gives you insights into programming language design, and above all demystifies the process of what happens when you compile your own code.
As with all degrees, that depends entirely on the school.
It would be interesting to discover the earliest CS program at a reputable university without a compilers requirement.
We started doing some language fundamentals and comparative analysis of different languages (how basic data types are implemented, structs, closures, etc.). Then we talked about various function calling conventions, beginning with a simple stack machine language and slowly building on that to support recursive calls, etc. By the end, every passing student had written non-trivial programs in at least 3 different languages, and written very simple yet enlightening implementations of the basic components of compilers (lexer/parser, AST, code generation, basic optimization, etc.).
I would've preferred a full-blown compilers course, but that class was still my favorite CS class.
http://www.cs.indiana.edu/~aghuloum/compilers-tutorial-2006-...
Unfortunately, the tutorial seems to be in a draft state, with a good amount content still needing to be written ("FIXME"s throughout).