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
That ties in a bit with Seymour Papert's idea of teaching programming as a medium of expression. One part is having a meaningful domain, though an equally important second part is encouraging exploration and tinkering, rather than plowing through rote exercises.