У меня первые два-три занятия по основам алгоритмизации идут так: вводится понятие алгоритма как шаблона поведения; дальше на "общекультурных" примерах идём - линейные алгоритмы с процедурами и глубокой декомпозицией; алгоритмы с условиями; циклические (но немного; по-настоящему уже потом, когда программировать с исполнителями начинаем в ББ). Примеры с условиями типа того, куда улетит объект, запущенный со скоростью V (< Vк1, < Vk2, < Vk3, ELSE..); или с действиями по постановке объекта под сигнализацию (цепь шагов с проверками, что всё нормально и выходом на неуспех в противном случае).
Так вот, все эти занятия использую параллельно КП (как псевдокод) и ДРАКОН. Первый раз так (в этом семестре одна группа идёт с начала; 3 прошли в сентябре). Эффект положительный - т.к. очень сильно подкрепляет насаживаемое мной понимание, что "программа - это не литературное произведение графа Льва Толстого, а жёсткая блочная инженерная конструкция".
Когда на чертеже они эти блоки "матрёшкой" обведут, а потом рядом начинают выписывать аккуратно текст (вглубь - сначала написали IF THEN ELSE END, оставляя место внутри и обводя вложенной линией, потом стали заполнять два образовавшихся гнезда в конструкции..; потом, если можно, переписывают с ELSIF) - сразу видно нарастающее понимание-"чувствование".
Далее, другие группы во втором семестре начинают изучать следующий блок знаний - "Основы вычислений". Т.е. если в первом семестре было управление учебным исполнителем, то теперь мы работаем с исполнителем "обычный компьютер"

- т.е. над памятью и средствами ввода-вывода.
Так вот, на первом же лекционном занятии хочется проиллюстрировать опережающим, но понятным примером, что такое доказательное программирование - т.е. как это - выводить программу из логических утверждений с доказанностью корректности.
Взял простейший пример - возведение в степень (расписываем: X^n = X^(n-1)*X, рассуждаем, что хорошо бы знать X^(n-1), тогда легко посчитать X^n; говорим, что будем в цикле считать возрастающие степени числа X; вводим индуктивные переменные X_i и i, определяем для них инвариант - X_i = X^i; из конъюнкции условия окончания цикла i = n и инварианта заключаем, что после конца цикла X_i = X^n).
Так вот, вообще говоря, для студентов техникума с ходу всё это сложновато может быть. Побоялся я выписывать программу - в глазах зарябит, испугаются, мозги выключат

Нарисовал цикл графически, и на чертеже этом стал приписывать утверждения. Потом долго пальцем водил по чертежу, поясняя, где какие утверждения истинны и откуда куда приходим. Нормально. Это было, повторюсь, спонтанное решение. Кажется, что возможность использовать чертёж вместо сплошного текста в сложные моменты, требующие понимания, позволяет лучше "достучаться" до мозга.