Подготовка начинающих программистов, как и восток, — дело тонкое. Всему и сразу научить невозможно, но и на «Hello, World!» останавливаться как-то не comme il faut. Накопленный за два прошедших семестра опыт оказался вполне успешен: программу подготовки осваивала добрая сотня студентов МГТУ им. Н.Э. Баумана. Чему же удалось научить два потока «бауманцев» и при каких начальных условиях?
Осенний семестр
Входные требования: знания C++98 / C++03 на уровне процедурного программирования.
- Язык: C++98 / C++03 (углубленно, практика);
- парадигмы: ООП, обобщенное программирование (практика);
- библиотеки: std (вкл. STL), boost (практика);
- архитектура: фундаментальные шаблоны, шаблоны Gang of Four (GoF, 20 из 23) (практика);
- качество и методология разработки: основы рефакторинга, SQuaRE, Waterfall vs. Agile / SCRUM, SWEBoK (теория);
- инструментарий: Eclipse IDE for C++ developers (практика);
- социальные навыки: работа в командах от 2 до 5 чел.
Результат (видение): уравнять численность команд, усилить фазу дизайна (UML), предложить разработку GUI, познакомить с системами управления версиями (VCS) и автодокументирования кода, предоставить возможность развития коммуникативных навыков.
Весенний семестр
Входные требования: знания C++98 / C++03 на уровне базового ООП.
- Язык: C++98 / C++03 (углубленно, практика) / C++11 (элементы);
- парадигмы: ООП, обобщенное, функциональное программирование (практика);
- библиотеки: std (вкл. STL), boost, Qt (практика);
- анализ и архитектура: UML (диаграммы классов), фундаментальные шаблоны, шаблоны Gang of Four (GoF, 20 из 23), конфликты в ОО-архитектуре («гибкость — простота», CAP-теорема) (практика), «технический долг»;
- качество и методология разработки: основы рефакторинга, комментирования и документирования кода (практика), ISO/IEC 9126, SQuaRE, Waterfall vs. Agile / SCRUM, SWEBoK (теория);
- инструментарий разработки: Eclipse IDE for C++ developers, Qt Creator, Git & GitHub (практика);
- инструментарий анализа и дизайна: Dia / dia2code, Evolus Pencil (практика);
- прочий инструментарий: Doxygen;
- социальные навыки: работа в организованных командах от 3 до 4 чел., публичная защита проекта (презентация).
Результат (видение): включить в «курс молодого бойца» элементы языка C и вопросы управления памятью, добавить в проекты на С++ поддержку уровня данных (data layer)… и готовиться писать high-load backend!