суббота, 13 июля 2013 г.

ПМО ИУС — Становление

Начальное состояние

В то время, когда я учился в БелГУТе, то проходил этот курс (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 минут — на сервере был специальный генератор отчетов, формирующий шаблон, в который нужно было только вставить код, скриншоты и написать вывод по работе.

Самой главной причиной улучшений в этом и последующих годах являлся человеческий фактор и накопление педагогического опыта. Это большое число различных моментов, о которых сложно узнать или понять, ни разу с этим не столкнувшись. Абстракции — для опытных и профессионалов, само обучение начинается с конкретики. Первое приближение самое важное, а в нём детали совершенно не нужны, важна только ключевые идеи. Люди разные, и объяснять одно и то же одинаковым образом нельзя. Чтобы научиться чему-то принципиально важному, его нужно повторять и повторение внедрять в курс. Если сказать, что л.р. можно сдавать до зачета в любое неважно-какое-время, то они и будут сдаваться в самый последний момент. Заставить и продавить — можно, но может получиться так, что факел у этого человека уже никогда не зажжется и программирование останется страшным кошмаром. …

Об этом периоде почему все так происходило сейчас писать сложно, так как это было достаточно давно, мы занимались много чем и что особенно, наше понимание происходящего значительно отличалось от того, что сейчас.