If you don't want to do that then you're better off studying logic in the philosophy department or combinatorics in the math department.
Well, that's what I'm doing. It's pretty fun.
Anyway, I think what you're doing is claiming that being "close to the metal" is somehow purer. This isn't really the case. I've done plenty of work in assembler, so I know that it's messy, prone to human error, and boring as hell. The only reason anyone should ever program in assembly rather than C is that they are making an application that needs to be extremely high-performance, or that a decent C compiler isn't available for their platform. Designing a CPU is only tangentially related to programming, it's more of an engineering problem than a programming one. If you mean understanding a CPU, that's probably worthwhile, but actually making one isn't something I'd ever expect a CS or SE grad to know how to do.
I will agree with you that CS grads should know the realities of how their interpreters work, how to write C/C++, and how to make data structures. But CS is a very wide field, even if you take the view that it's just math, and you can't expect new graduates to have experience in the lowest levels of computers. It's like telling me I must be a shitty math student because I don't derive everything from first principles, or telling a bio grad they must have been in a terrible program because they don't know how to synthesize proteins. There's so much more than the lowest levels, and all of it is interesting and all of it is worthwhile, and there's only so much a single person can really be good at.