По мотивам https://shgpi.edu.ru/forum/viewtopic.php?f=39&t=16 решил высказать пару соображений, связанных с обучением программированию.
Считаю, и чем дальше, тем больше в этом убеждаюсь, что научить программированию студента может только проектная деятельность. А именно - разработка больших программных систем на всем протяжении изучения того или иного курса. Причём, чем раньше студент будет озадачен проектом, тем лучше для развития его навыков, а также больше стимулов для получения новых знаний. К сожалению, при внедрении метода проектов в обучение программированию возникает множество проблем. Одна из самых труднопреодолимых - современная система обучения, которая подразумевает разделение одного курса на теоретическую и практическую части, которые нередко закреплены за разными преподавателями. В результате возникают серьёзные проблемы в организации обратной связи, невозможности оперативного реагирования на проблемы, возникающие у студентов при разработке проекта. Как следствие - при подаче теоретического материала лектор не имеет возможности уделить особое внимание темам, которые наиболее важны для реализации проекта, т.к. просто не знает о том, что вызывает особые затруднения у студентов. Столь-же серьёзные проблемы возникают и у преподавателя, ведущего только семинарские и лабораторные занятия, а именно - сложности, связанные с модификацией техзадания на проект из-за недостаточной теоретической базы у студентов.
Выхода из сложившейся ситуации два. Первый - сохранение традиционной методики при очень тщательной проработке техзадания и фаз реализации проекта, с учетом тесного сотрудничества преподавателей, ведущих лекционные, семинарские и лабораторные занятия. Реальные проблемы такого подхода - 1) разный уровень знаний и умений преподавателей, а также возможная психологическая несовместимость; 2) гигантское количество труда на разработку техзадания, спецификации, фаз, заданий промежуточного контроля при быстром моральном устаревании разрабатываемого проекта. Второй - закрепление курса за единственным преподавателем. Это даёт возможность прорабатывать только "скелет" техзадания и динамически модифицировать его в зависимости от реальных успехов студентов в реализации проекта, уделять большее внимание на лекционных занятиях вопросам, которые вызвали затруднения на лабораторных, а также без особого труда менять проекты от курса к курсу. Недостаток только один - невозможность массового применения в рамках современной системы обучения.
Вывод: современная система обучения, а вернее - её механизм, отвечающий за распределение одного тематического курса между несколькими преподавателями, является труднопреодолимым препятствием для массового внедрения одного из самых эффективных методов обучения программированию.