Note: readings from Software Abstractions (2nd edition) by Daniel Jackson (MIT Press) unless otherwise noted.