The Elements of Computing Systems, second edition