- PVSM.RU - https://www.pvsm.ru -
Привет! Я Маша, старший инженер-разработчик iOS в КРОК и аспирант на кафедре Прикладной математики и Искусственного интеллекта в московском вузе. А еще я уже четыре года преподаю. Два года назад мы с коллегами с кафедры, преимущественно аспирантами, основали кружок спортивного программирования, который вырос в большое IT-коммьюнити в стенах универа, где мы делимся разного рода знаниями со студентами.
В рамках этой затеи мы решили улучшить процессы обучения дисциплинам Computer Science (до чего дотянулись). К нему у всех уже было много вопросов.
Первый ужас я испытала на первом же занятии со студентами. Одна группа не могла привести ДНФ в КНФ, другая — не смогла даже общим усилием воли вспомнить таблицу истинности для конъюнкции и дизъюнкции. Третья — не понимала как программно устроены списки (это у нас проходят годом ранее). А потом я вспомнила себя — про мой курс преподы говорили то же самое. И про курсы до нас, и про курсы после меня. И школьную учительницу Ольгу Николаевну вспомнила: «В этом году класс еще слабее, чем в прошлом — если так пойдет и дальше, вернемся к жизни на деревьях!». В школе мне казалось, что это такой изощренный педагогический прием, который должен подхлестнуть нас учиться усерднее чтобы «доказать, что мы лучше чем кажется». Ошибалась.
Решили мы с коллегами порефлексировать — а почему так происходит? Результаты, наши грабли и опасные эксперименты с тигром под катом!
Осознание, что что-то не так ко мне пришло, когда мой научный руководитель, который ругал мою группу во время обучения, три года спустя теми же словами ругал группу, в которой я преподавала. «Вот вы-то были умненькие, старательные! А эти! Тьфу!»
Тут мне подумалось, что, кажется, дело не в студентах. И вовсе даже не в их старательности или умненьковости. Возможно, что дело и не в преподавателе… А в чем тогда?
Так началось мое грандиозное расследование.
Сначала, где-то осенью 2018, я решила пообщаться с первокурсниками, чтобы проследить, в какой именно момент «все идет не по плану», но не по плану пошло уже у меня:
Вечером после рабочего дня. Кайф.
Я решила сбавить обороты и поспрашивать старшие (третий-четвертый) курсы. В частности, почему играют на парах в карты, пишут доносы на преподавателя в дирекцию (опоздал на пару на 2 минуты!) и все такое. Я пришла к ребятам из кружка спортивного программирования, то есть довольно мотивированным студентам с высоким средним баллом, и в личке позадавала вопросы. Примерно все ответы выглядели вот так:
Фидбек от студентов
Стало ясно, что саботировать обучение студентов заставляют два фактора:
Первый фактор очень забавно выглядит со стороны препода. Это нам с вами понятно, что есть всякие там фронтенд, бэкенд, фулстек, а студенты что слышат? «IT — круто!», «машинное обучение — будущее!» В итоге выходит, как в этом забавном твите у Брагилевского:
Виталий Николаевич плохого не скажет (ну разве что иногда и в шутку)
А вот второй фактор занимателен сам по себе. Студенты, если честно, не делают ничего предосудительного, даже наоборот. Они стремятся оптимизировать свои ресурсы, и делают это очень даже эффективно! Представьте, что чтобы получить Х, у вас есть два пути: вложить очень много сил и времени или воспользоваться уже готовым рабочим решением. Какой вы выберете? А если речь про сдачу экзамена по профильному предмету?
В итоге, пообщавшись с коллегами и студентами, я выделила общие типичные боли: кто и от чего страдает. Страданий получилось довольно много — и у студентов, и у преподов.
Студенты:
Преподаватели:
И все мы страдаем от глобального:
Кто раньше шел учиться на кафедры прикладной математики? Увлеченные школьники-олимпиадники по физике и математике. Еще раньше — члены кружка радиолюбителей. Я клоню к тому, что это были ламповые нерды — люди, которым действительно интересна наука и сложные задачи.
Сегодня IT — это хайп. Просто для сравнения: вы давно видели агитацию становиться ветеринаром? А инженером-энергетиком? А врачом? А вот в IT зазывают буквально на каждом углу!
Да дайте уже позалипать в соцсеточки!
Более того, IT это не просто реклама «перспективности». IT буквально вокруг нас. Для современного студента быть программистом — все равно что быть «ветеринаром для смартфона» (так видит мою профессию шестилетний племянник).
Зачем абитуриенты шли в IT двадцать лет назад:
Зачем абитуриенты идут в IT сегодня:
Что они получают?
… погодите, а видеоигры где?
Отсюда и получается ощущение «устаревшей» программы. Низкоуровневое воспринимается как «древнее», а хайповое просто не находит отклика в закрепленных терминах (десять лет назад мы говорили «индуктивный вывод», а сегодня — «машинное обучение»). Связь низкоуровневого с актуальными технологиями и обновленных терминов с «классическими» также по разным причинам не доносится до студентов, что только укрепляет их в мысли что «это все не то».
Более того, какие-то области и вовсе никак не вплетаются в канву образования, просто не успевают: лет пять назад мы почти не знали про микросервисы и DevOps, а сегодня это уже целая профессия. Адаптироваться к такому развитию индустрии трудно, но не невозможно. Ниже спрятала интересные источники, где можно наглядно отследить, как появляются и отмирают области знаний.
Не буду пересказывать что там, есть отличный перевод на русский [3] издания 2001 года от СПбГУ. Сейчас важно другое: разница между изданием 2001 [4] года и 2013 [5] (актуальная на данный момент версия, 2020 готовится к изданию).
Knowledge areas — это области знаний, которые CC выделяет как необходимые для получения компетенции. Говоря о компетенции, мне больше всего нравится определение, которое дается в IT2017: Competency = Knowledge + Skill + Disposition [CC2020 [6]]
То есть для того чтобы получить компетенцию, недостаточно только обладать необходимым знанием, нужно также иметь соответствующие навыки применения этих знаний и быть готовым их применять.
IT competencies — that is, what students know, how they demonstrate performance, and how disposed they are to apply what they know. [IT2017 [7]]
Так вот за 12 лет количество этих Knowledge Areas, которые необходимо освоить чтобы стать программистом, выросло на 4 штуки! А другие две области и вовсе переформулировались и объединились с другими (новыми).
Теория когнитивной нагрузки [8] (Cognitive Load Theory, CLT) появилась в поздних восьмидесятых в рамках когнитивной психологии. Вкратце, эта теория описывает использование рабочей памяти человека [9] и трудности, которые могут возникать в этом процессе. Значительная часть этой теории посвящена изучению вопросов обучения и обучаемости.
Если не вдаваться в подробности, то CLT постулирует мысль о том, что объем рабочей памяти [10] ограничен и его переполнение может вызывать сильные провалы в «производительности» (да, аналогия с ОЗУ тут вполне прямая).
TED Talks [11] про CLT для тех кто любит смотреть и слушать,
статья [12] в журнале Learning and Instructions для тех любит читать!
Таким образом, вывод довольно простой: чем больше информации учитель пытается за раз впихнуть в ученика — тем меньше ученик в итоге усвоит! И речь не только о «профильном знании», учитываются также организационные моменты: в каком углу листка написать фамилию и когда будет контрольная.
Мы с коллегами постарались следовать этой теории, и вот чего добились.
Заручившись собственным энтузиазмом и некоторой поддержкой видосиков на ютубе про образование, мы с коллегами понеслись ломать и чинить устоявшиеся способы преподавать наши предметы.
Мой коллега в один прекрасный момент сам словил замечательное чувство того, что преподает какое-то устаревшее непонятно-что и решил вместо скучных лабораторок послать студентов на курсеру.
Схема была озвучена такая: проходишь три курса из специализации Яндекса по С++, в личной беседе доказываешь преподавателю, что ты реально слушал, а не прокликал (отвечаешь на вопросы, решаешь задачи: как на техническом интервью) — получаешь автомат за курс «Теория Графов и Комбинаторики» (ТГиК).
Для тех, кому не нравилась курсера, была дана опция прорешать 200 задач на литкоде [13]. Ограничений типа «только задачи про графы» не ставилось, надо было просто прорешать какую-то критическую массу. Все решения студентами коммитились на гитхаб (нет в репе — не зачту), и можно было посмотреть несколько решений одновременно, посравнивать их между собой.
В итоге выяснилось, что подавляющее большинство задачи списали. Кто из интернета, кто друг у друга. Часто попадались вот такие забавные ситуации:
DiffChecker довольно наглядно показывает, что код был списан
Мы все-таки хотели научить студентов решать задачи, поэтому после подозрения на списывание перед получением автомата им открывался новый круг ада: защита. Очно на паре мы давали задачу прямо на литкоде — сиди решай на компе как хочешь. После решения надо было объяснить это преподу (то есть нам) и ответить на дополнительные вопросы. По итогу это больше походило на алгоритмическую секцию технического интервью.
После защиты нескольких таких задач автомат подтверждался. Однако было и ограничение. За одну пару можно решить две средненьких задачи. Если не решает — отправляется с этими задачами домой. На следующей паре объясняет решение этих + получает на решение в классе еще одну. Если после трех таких попыток студент все еще не решил ни одной задачи в классе (в реальном времени) — автомат ему не ставим. Ибо не надо DDoS-ить препода! В итоге автомат по этим правилам получило 3-4 человека из 50 (две учебные группы).
Мы конечно очень расстроились что все так вышло: хотели как лучше, а получилось как всегда! Посовещались, собрали отзывы со студентов и поняли, что у студентов возникли сложности с когнитивной нагрузкой. Студенту предлагалось сделать два действия, чтобы решить домашнюю задачу:
Проблема была в том, что мы не сообразили, что первую задачу студентам будет решать так же тяжело, как и вторую. Мы-то считали, что они уже умеют в С++. А они не умели!
Отзывы студентов
Результат:
Другой мой коллега решился (был вынужден) экспериментировать прямо во время локдауна. Он с февраля по июнь вел дисциплину под названием «Теоретические Модели Вычислимости» (ТМВ), предмет в известной мере сложный для студентов, с большим количеством математики и формализма. До и после локдауна мы использовали совершенно разные способы улучшить процесс подачи и проверки материала.
На этом курсе решили попробовать снизить когнитивную нагрузку и обеспечить неотвратимость наказания. До локдауна идея была такая:
Сама контрольная состояла из 5 заданий, ориентированных на применение разобранных на занятиях алгоритмов. Одно задание — один алгоритм. Первые задания на алгоритмы попроще, последние — на алгоритмы посложнее. При этом выдумывать ничего не надо было, только применить алгоритм к начальным данным, никакого творчества от студента не ожидалось. Чтобы еще сильнее снизить когнитивную нагрузку на студента, коллега подготовил листы-шаблоны с заданиями, куда надо было вписать ответ. Выглядели они примерно так:
Вариант с заготовленными ответами для преподавателя
Неожиданностью и факапом для нас было то, что невозможность списывания и последующая неотвратимость наказания не мотивировала студентов изучать предмет. Вовсе наоборот: студенты дружно поддались общему потоку отчаяния с мыслью «всех все равно не отчислят». Неотвратимость наказания сработала не как честный метод разделения «молодцов» и «халтурщиков», а как бичевальная система злого дяди-препода, который «валит ВСЕХ!».
На волне разочарования студенты также проявили ужасающую безучастность: не задавали вопросов, не переиспользовали уже готовые материалы, например алгоритмы, описанные в опубликованных онлайн лекциях (то есть их даже конспектировать не надо было!).
Надо сказать что для получения автомата в этом курсе тоже были даны похожие опции, как и в предыдущем кейсе, только с более строгими условиями. Ими вообще никто не воспользовался :)
Результат:
Когда случился локдаун, очные занятия и КМ по ТМВ надо было как-то срочно перевести в дистанционный формат. Мы решили делать так:
RegLang Calculator — это проект на Kotlin (хотели актуальных технологий вместо LISP — ну и пожалуйста!), в котором студентам было нужно наполнить алгоритмами 5 языковых конструкций (например, проверить, может ли регулярное выражение определить слово в языке). Для каждой задачи были описаны методы и их семантика (входные и выходные данные). Студентам предлагалось пойти и зарезервировать за собой задачу комментарием:
Дальше процесс шел как обычно:
master ветка естественно была protected, все студенты были помечены ролью developer. Работа предполагалась в одном репозитории, так как на объяснение форков ушло бы слишком много времени, а мы и так потратили целое занятие на объяснение гита и гитлаба. Еще был ридми с подробным планом действий:
Был и пайплайн сборки, который проверял:
Некоторые студенты начинали DDoS-ить препода вопросами (прямо как на скрине в начале статьи). Для них пришлось ввести прогрессивную шкалу: чем больше вопросов — тем больше интервал между ними.
По началу казалось, что таким образом студенты и вовсе перестанут задавать вопросы, почувствовав, что преподавателю на них наплевать и он «свое время ценит выше чем их» (хотя так и было). Но на деле это сработало так, что студенты стали тщательнее готовиться к сессиям ответов на вопросы, на простые вопросы находили ответы сами, а к преподавателю несли только самые важные и сложные. Это сильно повысило качество общения преподавателя со студентами.
Результат:
Для проверки и вычисления жуликов мы открыли для себя и использовали стенфордский алгоритм Moss [16] (Measure Of Software Similarity). По итогу он был реализован как веб-сервис, который прогоняет алгоритм на файлах, которыми в него кидаешь, а потом показывает результаты на веб-страничке. Его код для доступа к сервису [17] написан на Perl, но есть и несколько других community contributions, некоторые перечислены и на странице с описанием алгоритма. О том, как он определяет степень похожести программ, можно прочитать здесь [18]. Небольшая инструкция, как получить ключ доступа и пользоваться перловым скриптом есть здесь [19]. Подробно о том как пользоваться Moss можно прочитать здесь [20].
Есть еще сервис DiffChecker [21], его мы использовали для проверки задач с литкода. В отличие от Moss, DiffChecker не дает оценку «похожести» программ, а только выделяет различающиеся слова/строки (обычный diff). Особенность Moss в этом плане в том, что он «умным» способом определяет различные примеси/шумы и тому подобное, что часто сбивает с толку и человека и «наивные» плагиат-чекеры. Выбирать какой из файлов считать «оригинальным» все равно придется преподавателю. Но, по крайней мере, Moss поможет избавиться от ощущения «мне кажется или они похожи?» Не кажется. Похожи. Вот процент схожести. Оценку пополам делить будем? :)
Подробности по данному вопросу в рамках этой статьи уже too much, но если интересно — давайте пообщаемся в комментариях!
В сентябре этого года меня снова поставили на Базовую Компьютерную Подготовку (БКП), и я, боясь, что забуду все сроки, которые назвала мне лектор, решила вывалить эту инфу из головы прямиком… в закрытую группу VK.
В этой группе я сразу опубликовала в виде текста с картинками описание учебного процесса (когда и как сдавать лабы, что нужно для допуска к экзамену и т.п.), а заодно постила срочные объявления и анонсы занятий.
Помимо этого я накидала также несколько прикладных статей типа «Как поставить и пользоваться IDE», «Как оформлять отчеты к лабораторным» и другие FAQ.
Как видите, мне даже лайки накидали, а охват намного шире моих 25 студентов — ребята делились со своими однокурсниками (это факт, я видела :))
Мое изначальное предположение было в том, что наличие текстовых «конспектов» по орг.процессу, а также размещение материалов и общение в известной соцсети поможет снизить когнитивную нагрузку на ребят. И — О ЧУДО! — это сработало!
В этом семестре у меня почти нет возможности присутствовать на парах лично, а еще в прошлом семестре я сильно задолбалась таскать здоровенную папку с бумажными отчетами по лабораторным. Это подтолкнуло меня поискать способ перевести всю отчетность и приемку/сдачу лаб как-нибудь электронно.
Количество отчетов по лабораторным, уносимое мной домой с каждого занятия, начиная с середины семестра
Коллега посоветовал мне Google Classroom, которым сам пользовался на тот момент уже третий год, и я поддалась искушению.
Classroom — это очень прикольная и гибкая штука, которая позволяет:
Удобно заранее сформулировать критерии оценки работы
Помимо этого все работы студентов загружаются автоматически на гугл диск, а проверяются вот в таком удобном интерфейсе:
Интерфейс проверки работы студента по конкретному заданию. Все прикрепленные к заданию им файлы можно просмотреть, можно также перейти к работе следующего студента и проставить оценки по критериям: вручную или по заранее подготовленной дискретной шкале.
Проверка работ в Classroom похожа на игру в пинг-понг и работает по следующей схеме:
Как вы понимаете, пункты 3-4 могут повторяться бесконечно долго. Поэтому тут необходима какая-то договоренность с учениками: в каких случаях пересдавать работу можно, а в каких уже нельзя.
Любой, кто преподавал на младших курсах (да и вообще в вузе) знаком с этой ситуацией:
Совсем не смешно, между прочим
Я своим студентам выставила в этом семестре такое условие:
То же самое касается типовых расчетов, контрольных работ и вообще любых мер контроля. Получить «отсрочку» с понижением балла можно только по уважительной причине, если эту причину подтвердит деканат. В общем-то ничего нового и никакой жести — я все это взяла из правил внутреннего распорядка института, которые также доступны студентам в открытом доступе.
В прошлом году условия, кстати говоря, были те же, но сдавать лабы можно было только очно и нигде не были зафиксированы требования и сроки. В результате я часто забывала кто, когда и что сдал, кому надо минусовать, а кому — нет. Неотвратимость наказания, о которой я говорила, не работала вообще никак. Classroom же сам мне подсвечивает сроки сдачи. В итоге и мне удобно, и механизм минусования прозрачный (нет надежды на любимый «авось»).
Результат:
Короче говоря, мы выявили три основных фактора, которые сильно демотивируют студентов и заставляют их саботировать обучение. Для себя мы составили что-то вроде чек-листа, по которому можно сверяться. Заметил затык на курсе — попробуй что-то поменять.
1. Студенты в ужасе от количества требований (проблема с когнитивной перегрузкой):
2. Студентам кажется, что курс занудный и вообще не пригодится:
3. Студенты DDoS-ят жалобами «Я ничего не панимайю и разбираться с этим не хочу»:
В комментариях будет интересно обменяться мнениями: какие новые подходы вы обкатываете на студентах (а если нет, то почему), как часто контролируете понимание предмета, как находите контакт с новой группой, что демотивирует ваших студентов и вас?
Студенты тоже присоединяйтесь — как справляетесь со своими мудрыми старцами-профессорами? Что полезного они делают с вами и наоборот? Что вас бесит в образовательном процессе?
Автор: Мария Водолазкая
Источник [22]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vy-sshee-obrazovanie/358509
Ссылки в тексте:
[1] Ассоциация вычислительной техники: https://www.acm.org
[2] Computing Curricula: https://www.acm.org/education/curricula-recommendations
[3] перевод на русский: http://it.mmcs.sfedu.ru/docs/cc2001r.pdf
[4] 2001: https://www.acm.org/binaries/content/assets/education/curricula-recommendations/cc2001.pdf
[5] 2013: https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf
[6] CC2020: https://ieeexplore.ieee.org/document/8363484
[7] IT2017: https://www.acm.org/binaries/content/assets/education/curricula-recommendations/it2017.pdf
[8] Теория когнитивной нагрузки: https://en.wikipedia.org/wiki/Cognitive_load
[9] рабочей памяти человека: https://en.wikipedia.org/wiki/Working_memory
[10] объем рабочей памяти: https://www.sciencedirect.com/topics/psychology/working-memory-capacity#:~:text=WMC%20refers%20to%20the%20capacity,irrelevant%20information%20over%20short%20intervals.
[11] TED Talks: https://www.ted.com/talks/peter_doolittle_how_your_working_memory_makes_sense_of_the_world
[12] статья: https://mrbartonmaths.com/resourcesnew/8.%20Research/Explicit%20Instruction/CLT,%20learning%20difficulty%20and%20instructional%20design.pdf
[13] задач на литкоде: https://leetcode.com/problemset/all/
[14] RegLang Calculator: https://gitlab.com/appmat/students/reglang-calculator
[15] Detekt: https://github.com/detekt/detekt
[16] стенфордский алгоритм Moss: https://theory.stanford.edu/~aiken/moss/
[17] код для доступа к сервису: http://moss.stanford.edu/general/scripts/mossnet
[18] здесь: http://theory.stanford.edu/~aiken/publications/papers/sigmod03.pdf
[19] здесь: https://gist.github.com/danielmai/9162349
[20] здесь: https://www3.nd.edu/~kwb/nsf-ufe/1110.pdf
[21] DiffChecker: https://www.diffchecker.com
[22] Источник: https://habr.com/ru/post/526200/?utm_source=habrahabr&utm_medium=rss&utm_campaign=526200
Нажмите здесь для печати.