Spin2 and uPython have the liberal arts covered. And C has general computing covered. But as an "Introduction to Assembly Programming, p101" I don't think you can beat PASM2. PASM2 is sort of RISCplus or CISCminus. So, principles of both RISC and CISC assembly programming can be briefed.
I am absolutely in love with PASM2. The beauty of being able to program without any concern for someone else's syntax has to be experienced to be fully appreciated.
While I have to admit that I'm not exactly a SmartPin wizard, the rest of PASM2 could not be easier, and it is complete. If there is something you want to do to a number... you can do it in about two clock cycles.