SlowSort()
Я преподаю программирование в провинциальном, но таки государственном университете. Работаю шестой год, по образованию — математик-программист. Работу свою люблю и отношусь к ней ответственно. Главная цель — научить студентов писать чёткие и прямые программы. Про это и хочу рассказать.
В четвертом семестре у прикладных математиков курс «Структуры данных и алгоритмы». Язык С++, среда и интерфейс программ мне индифферентны, но чтобы не тратили лишнее время, ратую за консоль. Две группы по две пары по четвергам весь семестр.
Первое занятие у одной группы. После получасовых объяснений студент спрашивает: «А что, STL использовать нельзя?» Говорю, что нет, ибо цель как раз в том, чтобы понять, как это работает. Он оказывается самым сильным в группе, библиотеку знает, но не умеет передавать параметры в функцию по ссылке. Круто. Объясняю.
Через пару — вторая группа. «А теперь возьмите код из примеров и реализуйте через функции». Четыре девочки говорят, что не умеют с ними работать. Мысленно матерюсь, вслух зову их поближе к доске и полпары объясняю то, что они должны были усвоить в первом, на крайний случай во втором семестре. Остальная часть группы краем уха слушает. Дома изливаю яд в блоге, вопрошая, почему девочкам незнание программирования ранее спустили на тормозах. Дураки с этой специальности отчисляются на первом курсе, так что по крайней мере математику студенты понимают.
Вторая неделя. Несколько студентов сделали задачи дома и принесли сдавать. Один красавец для каждой задачи создаёт отдельный динамический массив, перемещается по нему с помощью указателей и пытается выдать творение за линейный список. Ругаюсь, пока не начинаю повторяться. Товарищ оправдывается: мол, хотел побыстрее отделаться. В итоге потратил две пары на переделывание и дописывание задач. В конце сдаёт и гордо так говорит, что сделал быструю сортировку. Разумеется, нашёл реализацию для массива, и вместо каждого упоминания размера вставил функцию определения длины списка. Объясняю, что у полученного алгоритма сложность стала больше, чем у «пузырька». Ржём уже вместе. Кстати, о «пузырьке» — надо ли говорить, что остальные студенты о других сортировках не имеют никакого понятия? Обнаруживаются ещё четверо не знающих функций, зато давешние девицы к концу занятия доделывают первую часть лабы. Правда, с моей помощью, но радость и гордость на лицах неподдельные.
Началась третья неделя. Жду, что нового принесёт четверг.
Программисты, как известно, товар штучный. Я не идеальный преподаватель, иногда я ошибаюсь, у меня тяжёлый характер, и я знаю, что не все хорошо меня воспринимают. Но я верю, что вместе с коллегами мы сможем выпустить тех, кого не назовут индусами и быдлокодерами.