Excelente tópico Eric.
Essa era minha frustração durante a faculdade. No ITA o ensino era muito conceitual, mas meu perfil é de aprender colocando a mão na massa. Só fui aprender mesmo a programar no meu quinto ano, na hora de fazer o TCC. Meu orientador foi o Eduardo Guerra, atual editor da Mundo J e acabamos fazendo um framework para fazer parse de xml em Java:
http://jcoltrane.sourceforge.net/ Desculpem o visual, mas além de ser bom engenheiro como designer, na época eu não sabia nada de html, fiz tudo no dreamweaver =D.
Enfim, para mim funciona muito o contrário do normal, tento resolver o problema sozinho, assim fico sabendo todas suas nuances, e depois estudo os conceitos.
Mas nesse meio tempo comecei a dar aula e me apaixonei pelo ensino. Devido ao meu trauma de faculdade e à pegada mais prática da Fatec, resolvi fazer uma abordagem prática. Meu lema é "Se eu voltasse no tempo para me dar aulas, como eu conseguiria fazer isso da melhor maneira".
Por conta disso, já no terceiro semestre, matéria de Orientação a Objetos, eu ensino o pessoal teste unitário e passo duas provas práticas com os testes já prontos, uma a cada semestre, com projeto de verdade. No primeiro eles implementam uma versão simplificada do "Angry Birds" e no segundo uma versão simplificada de um framework web, parecido com webapp2 do App Engine ou Servlets do Java.
Enfim, é isso. Desculpem esse email enorme, mas é que adoro esse assunto.
Abs,