Возник уникальный курс по направлению Программная инженерия. Уникальный, потому как читается один раз. Когда создавался первый раз учебный план по направлению, этим курсом заткнули дыру - вместо физики. Планы на следующие года создавали уже с чувством, с толком и с расстановкой, и там такого курса нет (есть много отдельных курсов по программной инженерии).
Курс годовой, в первом семестре - экзамен, во втором - зачет. Одна лекция и одна лаба в неделю.
В принципе, что читать - понятно.
Проблема в следующем: это студенты первого курса и одновременно начинают изучать программирование на языке высокого уровня (это основы С++). До того они прошли основы алгоритмизации на основе Кумира, то есть писать программы в принципе умеют. Функции писали и массивы обрабатывали.

Не совсем понятно, как строить лабы. Вариантов - два.
Первый. Берем те же лабы, что и на программировании, и делаем их по науке: сверху-вниз, с пошаговым уточнением, через тестирование... Тут не совсем ясно, как это проверять. Отчет по лабе с описанием всех шагов требовать?
Второй. Берем ББ+КП и исполняем те же лабы. На основе школьной сборки, например. В первом семестре.
А во втором - английская версия ББ - 1.5 и лабы покрупнее.
А потом сравним и статистику соберем.

Кстати, может ли кто-нить какие-нить лабы покрупнее порекомендовать?
Вот у меня на системном ПО одна из лаб такая. Задается архитектура виртуальной машины, и надо реализовать интерпретатор. А проверку интерпретатора выполнять с помощью программы в кодах виртуальной машины.
Требования к реализации (на С++)
1. Объектно-ориентированный подход.
2. Модульный подход.
Процессор – отдельный класс, разделение на интерфейс и реализацию;
Выполнение команд – вызов функтора (не использовать оператор-переключатель!)
Память – динамический массив – поле-указатель в классе
Команды – иерархия классов-функторов;
Базовый класс – абстрактный класс Command с перегруженной операцией operator()
Пример архитектуры:
> -- Цитата:
> Одноадресная, стековая с адресным регистром PSW – 32 бита = 16 + 4 + 12 = IP + SP + FlagsПамять – байтовая, размер адреса = 16 бит.Стек вычислений– 16 ячеек по 4 байта – в процессореадресный регистр – 2 байтаТипы данных:	Целые знаковые – 4 байтаДробные – 4 байтаСтруктура команды, 24 бита:	Код операции – 7 бит,	b – 1 бит		b = 0 – адрес (абсолютная адресация)b = 1 – адрес + регистр (индексная или базовая)	Адрес – 16 битБезадресные команды занимают 1 байт = 8 битЗагрузка адресного регистра: схема та же		b = 0 – целая константа в команде (константа = адрес)		b = 1 – регистр + константа в командеЗагрузка стека, копирование вершины стека, извлечение из стека. Арифметика дробная в стеке, безадресная, сохранение в стекеАрифметика целая знаковая в стеке, безадресная, сохранение в стекеПереходы:	Безусловный прямой: IP = адрес (константа в команде); бит b работает по схеме загрузки адресного регистра: b = 0 – адрес (константа) в команде (константа = адрес)		b = 1 – регистр + константа в командеЕсли адрес = 0, то это косвенный переход по адресному регистру	Условный – то же самое, проверяет флаги;Вызов подпрограммы, адрес возврата сохраняется в адресном регистреВозврат – безусловный переход прямой: b = 1, регистр + 0