Здравствуйте, flax.
Везде моё скромное и не очень мнение. Могу ошибаться.
ХД>>Вопрос 1: для кого предназначается курс?
F>2 Цели:
F>1) Хочется самому уложить все в голове
F>2) Возможно(??) как спецкурс в Университете, т.е. for Advanced Students who concentrate to Design,C#, C++
Вот сначала надо, конечно, уложить всё у себя в голове. У вас, мне кажется, там большая каша: смесь ощущения больших возможностей и какие-то отрывочные сведения о возникающих задачах и способах их решения.
ХД>>Вопрос 2: что подразумевается под "концепцией программирования"?
F>Некоторые понятия и приемы организации программного кода — взятые не абстрактно ( напр. инкапсуляция, наследование — как философские понятия
), а в применении к современному процессу разработки.
F>Как это сказать?! Шаблоны, интерфесы, перегрузка, функторы, GC .... — они есть (классически реализуются/ны) в разных языках, но сравнения не проводились.(в том числе по сильным и слабым сторонам)
Позволю себе замечание по второму абзацу: вы перечислили множество понятий. Но ваш список несвязан. Нет контекста, объединяющего все его элементы, который задаёт им всем смысл. Поэтому...
Что, если подойти к обзорному курсу по концепциям с другой точки зрения. Шагать не от имеющихся средств и решений (как вы пытаетесь, по-моему) к истинным (классическим), а наоборот. Выявить прежде всего проблемы, которые появлялись перед поколениями программистов, обрисовать задачи, к которым приводил анализ проблемы, и уже потом познакомиться с существующими на сегодня (просто других нет, а не потому, что это классика или окончательное решение) решениями возникших задач.
Ведь геометрия возникла не от того, что Евклид придумал точку и прямую. Геометрия возникла, когда понадобилось делить землю на части. Так и с ООП — возникло-то и живёт оно не потому, что кто-то подумал и решил "Так будет хорошо". А просто возникли вполне определённые трудности с возросшим объемом программного кода и с отражением в этом самом коде модели внешнего мира. ООП стало временным ответом на возникшие задачи. Придёт время и возникнут задачи, которые потребуют нового подхода и оно отойдёт.
Это я к тому, что стоит идти от проблем, от их истории и причин, от возникающих задач к решениям.
И если вам нужен обзорный широкий курс, вы уже не обойдётесь плюсами и шарпом — придётся смотреть и принципиально иные языки: функциональные, логические и т. д. У них своя определённая ниша, с которой их пока никто сдвинуть не может.
Удачи!