Notional Machines and Introductory Programming Education is an outstanding survey — focused on a key element in teaching year-1 CS students: notional machines” (which are not the same as mental models”!). Teaching is a huge part of my job, and this was quite illuminating.