Начальное состояние
В то время, когда я учился в БелГУТе, то проходил этот курс (2000 год) и тогда он включал в себя ~ следующее содержание:
- Базовая графика в C++
- Нарисовать фигуру на экране с помощью графики CGI.
- Интерфейсы управления мышь и клавиатура
- Нарисованной фигурой управлять с помощью клавиатуры (по стрелкам) и мыши.
- Базовые вопросы ООП: классы и объекты
- Создать класс и объект, среда — Borland C++ 3.11.
- Наследование
- Создать два класса с наследованием друг от друга и продемонстировать результат.
- Перегрузка операторов
- Для существующего класса осуществить перегрузку операторов.
- Полиморфизм
- Только теоретически.
Дисциплину длительное время вел Семенюта А. Н.. В какой-то момент у него произошел конфликт с кем-то в университете и он ушел в другой ВУЗ (МИТСО).
В этот момент курс оказался в подвешенном состоянии, и его взял вести с условием только на один год Харлап С.Н.. Только после этого он был передан Андрею Логвиненко (потому что аспирантам первого года обучения не пристало вести лекции).
2003-2004
Лекции и содержание курса взял на себя Андрей Логвиненко. К ведению лабораторных подключился я и Сергей Зобов. По инициативе заведующей нашей кафедры Рязанцевой Н.В. одна из дисциплин на потоке была ликвидирована и по часам передана в ПМО ИУС, что расширяло общий объем где-то в 1.5 раза.
В это время было понятно, что содержание курса не изменялось лет 10, и с этим нужно было что-то делать. Но в какую сторону и что делать уже определялось нами. На содержимое больше всего повлияло то, что во-первых, Андрей в то время уже работал в «Интервэйле», и во-вторых, мы значительно были задействованы в олимпиадном движении (ACM), и все это наложило свой отпечаток.
В курс была введена тема о необходимости оформления кода и придерживания какого-либо стандарта. Для этого был фактически осуществлен copy-paste того, что на тот момент использовалось в «Интервэйле» — страница по ссылке являлась руководством по оформлению кода, а информация давалась как есть без какой либо адаптации.
Вторым нововведением было изучение систем генерации автоматической документации. Теоретически рассказывалось про Doxygen и JavaDoc, а сами лабораторные должны были оформляться по правилам Doxygen.
К содержимому лабораторных добавились потоки (iostream), блочная работа с файлами (fstream, чтение-запись блоками), конструкторы-деструкторы, перегрузка операторов, ассоциативные контейнеры, исключения, изучение одного и того же на C++ и Java для сравнения, HTML 4.0.
По большому счету темы л.р. не были каким-либо образом систематезированы — на тот момент фактически брались известные из практики вещи и внедрялись в качестве тем и работ. При чем без понимания возможностей студентов, потому половину работ в срок выполняли единицы, а весь курс не выполнил никто (состояние потока за 1-2 недели до зачётов — запасная ссылка). До тем Java, исключений, HTML никто не добрался.
2004-2005
В следующем году были учтены многие ошибки, содержание курса было модернизировано, добавились темы работы с графами и рекурсии, форматированного ввод-вывода на C++ с созданием своих манипуляторов, динамических структур данных, убрана Java и исключения.
С результативностью получилось уже лучше (резервная ссылка).
Такие результаты обусловлены многими причинами. Нами начались использоваться инструменты автоматизации — мною была разработана веб-система выдачи заданий, предоставления студентам информации курса и автоматического генерирования результатов (которая эволюционировала до настоящего времени), а Максим Кузьмич разработал систему тестирования (вопрос-ответ-результат для проверки знаний по л.р. или курсу) — она в ПМО ИУС использовалась где-то 2-3 года, а на другой дисциплине (ПМО МПС) используется до сих пор.
Если не ошибаюсь, в этом году мы перешли полностью на электронные отчеты по л.р. — если раньше они печатались, то сейчас достаточно было сдать doc-файл (чисто административное достижение в борьбе с бюрократией). В дальнейшем был ещё больше развит успех в этом направлении, когда отчет собирался за 3-5 минут — на сервере был специальный генератор отчетов, формирующий шаблон, в который нужно было только вставить код, скриншоты и написать вывод по работе.
Самой главной причиной улучшений в этом и последующих годах являлся человеческий фактор и накопление педагогического опыта. Это большое число различных моментов, о которых сложно узнать или понять, ни разу с этим не столкнувшись. Абстракции — для опытных и профессионалов, само обучение начинается с конкретики. Первое приближение самое важное, а в нём детали совершенно не нужны, важна только ключевые идеи. Люди разные, и объяснять одно и то же одинаковым образом нельзя. Чтобы научиться чему-то принципиально важному, его нужно повторять и повторение внедрять в курс. Если сказать, что л.р. можно сдавать до зачета в любое неважно-какое-время, то они и будут сдаваться в самый последний момент. Заставить и продавить — можно, но может получиться так, что факел у этого человека уже никогда не зажжется и программирование останется страшным кошмаром. …
Об этом периоде почему все так происходило сейчас писать сложно, так как это было достаточно давно, мы занимались много чем и что особенно, наше понимание происходящего значительно отличалось от того, что сейчас.