http://www.ccs.neu.edu/home/matthias/
Presentations are useful - 2do read -
co-author of How to Design Programs