At least at GT 10 years ago, a machine architecture course (starting with logic gates, moving on to MIPS assembly, then CPU architecture) was pretty early in the CS curriculum. Seems pretty essential, is it not common?
At Utah (graduated three months ago) we were required to take one class that used MIPS and another class that used x86 (the compilers class was optional). They were great, and I agree seem pretty essential.