Current CS student and in our architecture course we were learning surface-level x86 but mostly Y86, which is a toy language simplification of the x86 architecture. No real complaints about it, but friends of mine in electrical and electrical computer engineering (different school at my university) were learning ARM. Not only was it simpler it was much easier for them to implement non-virtualized code.
I thought the engineering department was doing it better.
+1 to GDB not being simple, was a larger learning curve for most of our class than C, x86, or any of the concepts.