You may wish to check out "How to Design Programs" (MIT Press 2001, also avalibale at htdp.org). It introduces the notion of a "design recipe" where a teacher can check several intermediate design steps systematically. It's mostly functional but you should be able to adapt it to Python. -- Matthias