There is a movement to "contextualize" introductory programming courses (and other CS courses) by teaching core concepts in the context of a problem domain that is meaningful for the students. Media computation is one such effort: http://coweb.cc.gatech.edu/mediaComp-teach