2Draco по поводу концепций
теория программирования развивалась по этапам:
1. структурное программирование,
2. модульное программирование,
3. объектно-ориентированное программирование
вот тебе и порядок в котором развиваться. я очень сильно сомневаюсь что в этом порядке можно что то поменять. и перескочить какой то пункт вряд ли возможно. материалов по этим концепциям напихано
везде и
много 
и само собой нельзя забывать о таких на первый взгяд очевидных вещах:
1. тестирование (искать test driven development)
2. формальное описание проекта и документирование исходного кода (сначала поискать про UML, для общего развития смотреть doxygen)
ну а потом уже [анти]шаблоны проектирования (design [anti]patterns), компонентное программирование, AOP и т.д.
много интересных слов можно прочитать на
http://c2.com/ 
special for IceD: я знаю про функциональное программирование

, но в наших реалиях это больше тянет на внеклассное чтение

(к сожалению наверное)