Python и алгоритмы: как устроены практики на МКН
На факультете МКН в учебном плане магистратуры есть «педагогическая практика», благодаря которой студенты в течение семестра учатся преподавать, работая в команде над курсом для школьников или студентов младших курсов. Студенты магистратуры «Современная математика» Лиана и Евгений рассказали о своём опыте преподавания младшекурсникам.
Лиана
Педпрактику я прохожу под руководством Ивана Казменко, веду математические основы алгоритмов у группы 105, это первый курс программы «Науки о данных». Лекции по нашему курсу начинаются в середине семестра, практики же с сентября по одной в неделю. На практиках мы рассказываем основы алгоритмов, а на лекциях приводятся доказательства, например, формально доказываются асимптотики алгоритмов.
Во время практики мы проговариваем основные моменты по конкретной теме: алгоритмы на графах, игры, структуры данных, геометрия. Практики ведутся по слайдам, их готовили и обновляют преимущественно Иван Казменко, а также Никита Гаевой и Владислав Макаров (1 курс аспирантуры). Во время пары цель – разобрать предлагаемый материал и обсудить возникающие вопросы. Слайды же после появляются в открытом доступе, всегда можно по ним что-то освежить в памяти, а если возник новый вопрос – написать преподавателю. По теме даётся контест – набор задач, которые в течение двух недель студенты могут засылать в проверяющую систему и получать баллы для зачёта. Задачи можно присылать и после дедлайна до конца семестра, но уже с половинной стоимостью.
Безусловно подготовка к каждой паре мне нравится и с точки зрения моего собственного образования. Одно дело самому понимать алгоритмы.. но чтобы объяснять их, требуется другой навык: надо очень последовательно излагать свои мысли, что удавалось к концу семестра всё лучше. Для подготовки я слушаю записи лекций других преподавателей. Сохранились записи некоторых пар Ивана Казменко, проведенных годом ранее, также в открытом доступе можно найти лекции Павла Маврина (ИТМО), по-моему он здорово рассказывает алгоритмы, очень аккуратно. Вот я смотрю, как они это делают, и пытаюсь сделать не сильно хуже. Благодаря удачному расписанию иногда хожу сама на практики к Никите Гаевому, послушать, как он какие-то нюансы рассказывает.
Кроме меня все аспиранты и магистры, проводящие практические занятия, финалисты ICPC (кто поедет, кто уже ездил). Чуть опасалась, что мне может быть некомфортно, но в процессе я более чем разубедилась в этом: коммуникация со сложившимся коллективом преподавателей была очень классная и располагающая. Нас практиков 5 человек на 6 групп, и лектор, Борис Золотов.
Мне хочется соответствовать ожиданиям студентов, но это оказалось трудно. В середине семестра получила отзывы от группы и они были ну очень разные, как будто я в двух группах веду. Каждый отзыв, который я прочитала, я проанализировала и поняла, из какой ситуации он появился, и я попробовала использовать то, что мне сказали. Ещё с середины семестра моё занятие переехало с первой пары на вечернее время, и это тоже положительно сказалось на качестве *смеётся*
До этого я пять лет готовила школьников к олимпиадам по математике, и теперь интересно работать со студентами, слушать, как они вопросы задают. Очень приятно, когда получается взаимодействие с аудиторией. Тогда и пара более живо проходит, и комфортнее чувствовать себя около доски. Поэтому отдельное спасибо тем студентам, которые участвовали в обсуждениях и/или которые обращались лично, поддержка этой части группы очень помогала мне, особенно поначалу :)
Евгений
На МКН я третий год учусь, восстановился на четвертый курс бакалавриата Математика и сейчас в магистратуре. Раньше я учился на матмехе, но не доучился последний год и ушёл работать программистом. Мне тогда казалось, что всё, что для этого нужно, я уже вынес. В процессе «доучивания» на МКН я узнал, что это не так. Раньше я думал: нет прямой пользы, что мы прошли теорию графов, не бывает, чтобы потом я пришёл на работу разработчиком, сел и начал применять теоремы о раскрасках. Теперь понимаю, что несмотря на это, очень много разной пользы от серьёзного обучения всегда опосредованно идёт.
Исходя из этого, я решил, что года на МКН мне как-то мало, так что постарался поступить в магистратуру МКН «Современная математика». В магистратуре СПбГУ обязательная педагогическая практика, чему я рад. Мне давно хотелось на себя примерить роль преподавателя, и понять, насколько мне интересно объяснять.
Логично начинать с предмета, в котором я уже разбираюсь. Программирование я понимаю лучше, чем математику, и с одной стороны казалось, что мне будет проще с программистским курсом, а с другой стороны, что я принесу больше пользы. Так что я попросился вести практики по курсу Python.
На курсе две группы – Современное программирование (СП) и Науки о данных (НоД). Лектор Никита Андреевич Соболев читает лекции сразу для всех и проверяет домашнее задание у группы СП. Периодически я у него что-то уточняю. Например, был случай, что я пачке студентов поставил тройки, это неудовлетворительная оценка из 10 баллов, и вот сомневался: всё-таки они делали какую-то работу, но очень плохо. И я спрашивал Никиту, нормально ли поставить такие оценки, он сказал, – «конечно, ставь». Я думаю, это хорошо повлияло: если понимаешь, что можно тройку получить, то начинаешь хотя бы внимательно читать задание.
Моя группа – математика и анализ данных (НОД), второй и третий курс, для них это курс по выбору и на него много людей записалось. Им это ближе, чем чистым математикам, потому что анализ данных часто в Python’е происходит и в этом плане полезно развить базовые представления о том, что такое хороший код на Python’е. Плюс в курсе есть и архитектурные моменты.
Быстро стало понятно, что у меня очень много времени уходит на проверку кода, – надежда, что будет проще, не оправдалась. На проверку одного ДЗ я тратил до 15 часов, приходилось откладывать работу над своими учебными задачами. Совсем не хотелось откладывать проверку, потому что задания идут последовательно, и студенту важно увидеть фидбек по предыдущему домашнему заданию, и после этого уже браться за следующее, иначе ошибки повторятся.
Что включает в себя проверка задания. Я открываю проект студента, читаю код и пишу комментарии. Когда я проверяю работу, я ещё не знаю какая будет за неё оценка: я заношу комментарии в таблицу, в которой заранее проставляю для себя критерии. Например, по стилю какие-то проблемы, переиспользуемость низкая, качество кода страдает. Отмечаю, если учтены комментарии из предыдущих заданий. В конце сортирую таблицу и проставляю баллы от самого лучшего к самому худшему.
Самое сложное это постоянно всё повторять. Если в процессе ответа впервые формализуешь какую-то мысль, то это приятно, узнаешь в процессе новое. Если нового уже ничего не узнаёшь, но всё равно надо потратить время на то, чтобы донести мысль, то это воспринимается как рутина. Я стараюсь этот процесс по-возможности автоматизировать: я делю отзыв на две части, в первой я пишу студенту о каких-то проблемах, конкретно связанных с его кодом, и во второй части я копирую детали, которые уже объяснял кому-то ранее. У студентов часто повторяются ошибки, и я стараюсь агрегировать об этом информацию в pdf файл для переиспользования.
Основная польза преподавания для меня в том, что если в голове есть неявное знание, как писать не стоит, то когда кому-то объясняешь, оно переходит из неявного в явное, вербальное. Есть несколько слоёв понимания материала, они всё усложняются вглубь, и навык кому-то объяснить это как раз один из таких слоёв понимания. Это же не просто так, что учёные – и математики и другие, – занимаются педагогической деятельностью. Если ученик что-то не понял, тогда ему нужно другую метафору привести, там или тут какую-то деталь закрыть, и тому подобные упражнения, которые углубляют собственные представления о материале. Какие-то вещи я периодически узнаю из Python’а, которые не знал, –нечасто, но бывает, и это тоже интересно.
Первокурсникам дадим пару советов, которые дали бы самим себе.
Лиана
- Больше общаться со своими одногруппниками и вообще другими студентами. Самые интересные задачи при подготовки к олимпиадам мне в общении предлагали мои одноклассники: на перемене начиналось “я такую классную задачу вчера нашёл, попробуем решить?” И чаще всего это были очень интересные задачи. В университете также: разные материалы, книжки, хорошие записи лекций, – самые запоминающиеся вещи всплывают в разговорах. Если в чём-то разобраться нужно, то стоит обсудить это с кем-то из друзей-однокурсников, знакомых со старших курсов. Часто встречается такая проблема, что непонятно, что именно непонятно. Попробуйте объяснить всё своему одногруппнику, и рассказывая, вы увидите, где пробел!
- Не стесняться никому задавать вопросы. До меня это долго доходило :) Когда у меня возникает вопрос, я сначала очень долго думаю, насколько он содержательный. И эти незаданные вопросы порой надолго остаются и имеют тенденцию накапливаться. А на самом деле, если его задать сразу, это сэкономит кучу времени. Причем задавать вопросы можно всем, вообще всем. Люди очень рады, когда им задают вопросы. Есть исключения, но их немного, и проще на практике выяснить, кому не стоит. Приведу пример. У меня в бакалавриате было совершенно мало топологии. После первого курса я была на двух летних школах, и там и там был Виктор Клепцын. На первой школе в Бремене я задала ему вопрос по докладу и он буквально начал рассказывать для меня университетский курс топологии с дополнениями. Спустя 2 недели мы были в Дубне. Я попробовала послушать лекцию Гаянэ Юрьевны Паниной и поняла, что топологии мне все еще очень не хватает. И Виктор Клепцын мне ещё несколько лекций провел. Я задаю вопрос, что конкретно непонятно, а за этим следует подробный рассказ. Так несколько раз, и я получила те базовые знания, которые стыдно не иметь с моей точки зрения, и смогла слушать лекции дальше. Очень благодарна Виктору, – и себе, что не постеснялась спросить.
Евгений
- Найти для себя оптимальный объём конспектирования. У всех по-разному память работает, кто-то может вообще ничего не записывать, а кому-то сложно запомнить незаписанное. Здесь важно найти для себя оптимум. Лично для себя я заметил, что без конспектирования совсем плохо запоминаю; что начало лекции (где определения) записать важнее, чем остальную часть; что тема лучше запоминается, если я пишу, а не печатаю; что если совсем непонятно, то записывать нет смысла – надо спрашивать. Ну и, наконец, хороший конспект полезен не только до экзамена – к ряду своих конспектов для уточнения каких-то деталей я регулярно обращался и после курса.
