ARM Assembly Language Using the Raspberry Pi
I find the treatment of binary numbers interesting.<p>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".<p>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"<p>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.