ARM Assembly Language Using the Raspberry Pi
I find the treatment of binary numbers interesting.I normally see it approached as "numbers are these abstract objects that can have different names, and different number bases are just different ways of naming the numbers; base two is handy for computers".This approaches it as "binary is a representation of the state of switches.  Oh by the way here's an equivalence relation between bit strings and the decimal numbers you know and love"It's been so long since I've taught this to anybody I have no intuition about whether or not this approach is any better.