🔥

Тред (Дмитрий Свиридкин)


Тред про всякие курсы и образовательную активность. Поехали.
Второй тред. Про большие курсы. Их не много. twitter.com/itunderhood/st…

В прошлом году позвали вести практику по C++ в питерской ВШЭ у первого курса. Задачи готовые, проверяй, объясняй, все дела. Ну ок. Я не против. Я знаю, что C++ не знаю, а это отличная возможность, его узнать чуть получше.

У меня в бакалавриате в первый год, если что, C++ не было. И думаю, это правильно. Учить программированию с него — можно, но идея так себе.

Но тут вроде как все олимпиадники, монстры, титаны, аж страшно, и "умеют" программировать. Так что ладно. (На самом деле нет)

Проверять работы тяжело. Особенно если ты их прямо проверяешь, а не просто тесты запустил и ладно. Тяжело по разным причинам. Во-первых, я стараюсь проверять все в срок, чтоб студенты как можно быстрее получили фидбек и могли исправить ошибки.

Но непобедимый факт: бОльшая часть студентов отложит все до последнего момента. И не обязательно потому что лентяи. Может быть высокая нагрузка и дедлайны каждый день.

Читать одно и то же пару раз — норм. Читать 15 раз — кошмар. Нет, не в смысле списывают. А в том смысле, что лабораторные задачи часто простые и имеют только одно решение. А на C++ никто его, конечно, правильно написать не может

Очень много ошибок при написании плюсовых программ. Условно: есть 20 типовых ошибок. Каждый делает 10-15 из них. И каждому надо про его особое множество выстрелов в ногу рассказать и расписать.

Еще бывает отсмотришь одну работу. Вроде, все ошибки нашел — отписал, оценил. Смотришь следующую — а там какой-то особо изящный отстрел головы. Смотришь снова предыдущую — а там он тоже есть, только менее заметный...

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

Типовой комментарий "Ссылка на строку кода: тут UB, потому что..."

Про удаленку кратко: Повезло большую часть года тогда провести в оффлайне. Мне, привыкшему к живому взаимодействию и разбору у доски с маркером или мелом в руках, крайне не нравится удаленный формат.

Когда ко мне на факультативы приходило два человека — было грустно. Когда у тебя 8-15 молчащих не реагирующих черных квадрата — вообще депресняк.

Заставлять включать камеры — как-то не очень. Не экзамен ведь. Да и если включить, нагрузка на сеть подскакивает и трансляции начинают лагать.

@_bravit Совместный лайвкодинг — получается хаос Выдать задачи и ждать — на удаленке получается мертвое царство Выдать задачи и потихоньку их по ходу разбирать — получается еще одна лекция... Разбор примеров и крайних случаев — опять лекция... Я так и не понял.
Как вообще по-нормальному вести практические занятия по программированию в удаленном формате — загадка. Их и в неудаленном формате не всегда понятно как вести twitter.com/Nekrolm/status…

Однажды от @_bravit поступило заманчивое предложение выучить еще и программирование под Linux. Звучало оно, конечно, не так, но именно так я его понял. Я взял перерыв на полгода, чтобы переждать удаленку (ха-ха) и подготовиться

Накидал план из тем, которые знал, в перемежку с теми, о которых только слышал. И начал собирать мануалы. Материалов лекционных набралось достаточно. Что-то уже в бою заходило не очень, что наоборот. Студенты еще набор тем подкинули (на следующий раз).

То есть в первый раз я не знал, с какой подготовкой будут студенты, и накидал немного тривиальщины. На следующий раз ее успешно можно будет заменить, на более полезное.

Но если с лекциями все более-менее понятно, то с практикой начинаются реальные проблемы. Готовых заданий у меня не было. Все надо было придумывать. Задачи должны быть нескучными, полезными, реализуемыми и проверяемыми. И это не так легко как кажется

Я пошел по пути больших комплексных задач, закрывающих по нескольку аспектов. Потому что иначе будет уныло. Просто почитайте файл? Не, давайте лучше почитайте ELF-формат и вычитайте из него все чтобы построить граф зависимостей.

Но большие задачи тяжело проверять. И если каждый из 10-15 человек сдаст решение на 3-4 тысячи строк плюсового кода, я в этом утону

Да и студенты тоже утонут. Потому пошел по пути групповых решений. Получилось не плохо и не хорошо. Я не делал промежуточных дедлайнов, к которым надо подготовить определенные фичи. А надо было бы. Чтобы избежать оттягивания всего до конца и ночных хакатонов.

Со стороны это могло выглядеть как "Представьте, что я ваш продакт менеджер, и сделайте хорошо". Ну как обычно бывает :)

Я накосячил с порядком тем, чем также осложнил возможность инкрементального выполнения заданий. Ну что поделать: первый блин

Были и удачные решения: я никак не ограничивал в выборе языка для решений. Ограничение только в здравом смысле и возможности решить задачу на этом языке. На C/C++ свет клином не сошелся. Были решения на go, Rust, на питоне тесты всякие. Хорошо.

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

В любом случае я узнал много нового, попробовал себя в роли менеджера (пока не очень) и отлично провел время. Рекомендую.

Дмитрий СвиридкинДмитрий Свиридкин