Главная » Хабрахабр » Как поймать программиста на списывании и стоит ли этим заниматься?

Как поймать программиста на списывании и стоит ли этим заниматься?

Побывал я тут в славном городе Переславле-Залесском на 13-й конференции “Открытое программное обеспечение в высшей школе”, организованной Базальт СПО и ИПС РАН. И показалось мне, что на данной конференции поднимались вопросы, которые могут быть интересны читателям Хабра. Среди них:

  • Как построить более эффективную систему высшего образования?
  • Как, и стоит ли вообще, контролировать списывание при обучении программированию?
  • Можно ли внести вклад в открытый проект не изменяя его исходный код?

Особенно хотелось бы выделить два доклада, а точнее, проблемы, которые в них поднимались.

  • “Oшибки в государственном надзоре за высшим образованием — главная проблема высшего образования в России” (автор С. М. Абрамов)
  • “Как я делал проверку копипасты для спецкурса по Python3, и что из этого вышло” (Г. В. Курячий)

Буду рад обсудить эти темы в комментариях.

Первый важный доклад: “Ошибки в государственном надзоре за высшим образованием — главная проблема высшего образования в России”

В данном докладе автор обозначил проблемы неэффективности нынешнего образования. Возможной причиной этого является забюрократизированность. Про проблему забюрократизированности сильно распространяться не буду, т.к. все, кто связан с образовательным процессом, так или иначе с ней сталкивались. Автор выразил мнение, что основной проблемой образования является то, что контролируется процесс, а не результат. То есть ВУЗу навязывают формальные требования к процессу, и именно они проверяются. Реальной же ценностью образования является востребованность его выпускников. Автор несколько раз сослался на такие контролируемые параметры как освещённость и температуру в помещении. Последнее, возможно, было следствием не очень высокой температуры в помещении, где проходила конференция. Докладчик отметил, что формальные требования не укладываются, например, в онлайн-образование, которое сейчас всё больше распространяется.

Автор предложил подход, позволяющий, на его взгляд, улучшить качество образования. Подход заключается в оценивании ВУЗов по востребованности его выпускников. Ну а востребованность выпускников предложил оценивать по несколько спорному, на взгляд многих, критерию — белой зарплатой выпускников в РФ за три года после выпуска из университета, то есть по НДФЛ-2. Срок определялся исходя из того, что со временем влияние ВУЗа уменьшается. Белая заработная плата только по РФ выбрана исходя из того, что выпускники пополняют бюджет, часть из которого пойдет на обеспечение обучения следующим поколениям. Поправки он предлагал всего две: регионализация (нормирование зарплаты исходя из средней по региону) и коэффициент важности для государства (поскольку есть значимые отрасли с небольшими зарплатами).

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

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

Второй важный доклад: “Как я делал проверку копипасты для спецкурса по Python3 и что из этого вышло”

Автор вёл спецкурс по обучению языку Python. В процессе обучения студентам были предложены обучающие задачи с ограниченным количеством вариантов, и невозможно было дать каждому студенту индивидуальное задание. Автор пытался автоматизировать проверку заданий, задания принимались онлайн и, конечно, возникала проблема плагиата или, попросту, списывания. Автор разработал программу, в которой он привел программы к “каноническому” единообразному виду. Кроме форматирования PEP8 он также изменил названия переменных во внутреннем синтаксическом дереве разбора и получил скорее слепок алгоритма, а не слепок программы. По этому слепку можно было составить кластеры похожих решений, оригинальным автором этого кластера является первый сдавший.

При проверке утилита показывала очень хорошие результаты, но и ложных срабатываний было много. Автору пришлось даже ввести правило, что кластер однотипных решений размерностью более 5 элементов являлся ложным. Число 5 было взято автором из тех соображений, что к нему на курс вряд ли могли записаться люди знакомые группой более 5 человек. И всё равно было много ложных срабатываний, и пришлось просматривать все решения на возможный плагиат “глазами”. В итоге автор задался вопросом, а правильно ли в условиях сильной “информационной связности” пытаться ее понизить. Например, суть opensource — это как раз коллаборация, да и вообще, современные IT-технологии во многом основаны на принципах коллаборации, и нет ничего плохого в заимствовании хорошие решения. Более того, он сказал, что не знает, где в России обучают быстро искать информацию для решения, и если такого места нет, то первым будет МГУ.

В кулуарах я продолжил дискуссию с автором и выяснил, что хотя он и признал бесперспективность борьбы с коллаборацией в программировании (по крайней мере, таким образом), он все ещё задается первоначальным вопросом. А именно, как выявить оригинальных авторов как наиболее умных, талантливых и трудолюбивых представителей студенчества? Когда я предложил отказаться от контроля, а проверку знаний осуществлять путем проверки принятого PR в какой-нибудь адекватный репозиторий, мне справедливо ответили, что на курсе по основам языка, так не получится, а если получится, то это будет скорее проверка умения взаимодействовать с сообществом и проталкивать PR. Я в горячке высказал мнение, что с помощью контроля готовят средних специалистов. Даже прозвучало (уже не от меня), что программированию можно учить и в техникумах (колледжах, если хотите), с чем я категорически не согласен. Кодеров — да, можно учить и в техникумах, и им необязательно знать сложную математику и продвинутые алгоритмы. Ведь сейчас уже написана огромная база кода с множеством алгоритмов и нужно просто знать как их использовать в нужном месте. И да, кодеров, которые знают как использовать ту или иную библиотеку, технологию или набор технологий, нужно существенно больше, чем программистов. Они действительно быстрее решают подобные однотипные задачи и, следовательно, эффективнее с точки зрения бизнеса. Но именно те самые-самые, которых и пытается выявить автор (и одним из которых, я уверен, он и сам является), и двигают прогресс. Многие из них не могут ужиться и пройти через систему контроля и вылетают из ВУЗов, потому что, как известно, выживают не самые умные и сильные, а самые приспосабливаемые.

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

Дошкольное образование

Хотя конференция имеет словосочетание “высшая школа” прямо в своем названии, было довольно много докладов о разработках для дошкольников. Тезис звучал следующем образом: начинать обучать IT нужно раньше, чем в ВУЗе, а то страшные вещи случаются: например, одна выпускница наизусть выучила 31 программу на языке Python для сдачи экзамена.

Один из таких докладов был посвящен проекту ПиктоМир. Продукт представляет из себя простейший графический язык и эмулятор для управления роботами. Данный продукт внедряется на данный момент в ХМАО и ещё в нескольких местах в Москве и проходит апробацию на детях начиная с шестилетнего возраста. Физических роботов, поддерживающих данный язык, насколько я понял, существует только два, а поскольку, как выразился автор, проект разрабатывается в НИИСИ РАН, оба робота в военном или полу-военном исполнении. Правда, автор доклада после демонстрации на кофе-брейке подарил организаторам три детских робота из мира ПиктоМир (вертуна, таскателя и толкателя, если я не ошибаюсь) 🙂

→ Исходный код на gitlab.

Был представлен ещё один робототехнический проект для обучения детей программированию. Это проект УМКИ. Разрабатывается ещё одним институтом российской академии наук, хоть и гораздо меньшим по размеру ИПЛИТ РАН. Проект направлен на создание роботизированной платформы (машинки) на основе Arduino. Связь осуществляется по интерфейсу ZigBee, поэтому на основе нескольких машинок можно организовать mesh-сеть, то есть группа машинок представляет из себя мультиагентную систему. Автор принёс показать несколько машинок, но поиграться с ними мне не удалось, т.к. нужно было уезжать в этот же день.

→ Исходный код на github.

Студенческие и университетские свободные проекты

Алексей Новодворский (Председатель Оргкомитета Конференции) отметил, что, к сожалению, проектов, которые разрабатываются, поддерживаются, или изначально стартовали в университетской среде, у нас очень мало. Тут я согласен, и в своей статье “Где взять программиста”, я отметил, что хотя университет — это самое правильное место для работы над проектами с открытым исходным кодом, их у нас достаточно мало.

На конференции было представлено два подобных проекта — это, как вы понимаете, Embox и проект простой IDE ”Kuzya”.

В своем докладе, я попытался сравнить подходы к развитию разных ОС, применяемых в учебных целях. Я пришел к выводу что Minix, который в ходе своего развития (версия 3) пришел к полноценному открытому проекту, более интересен с точки зрения обучения студентов, чем, например, Nachos, который может применяться только в качестве обучающего средства. Также я позволил себе назвать наш проект успешным, поскольку он продолжает развиваться уже более восьми лет и является востребованным в промышленности. Эту успешность я связал прежде всего с изначальной ориентацией на создание полноценного программного продукта в рамках проекта с открытым кодом. Естественно, про открытость проекта я не говорю, она подразумевается как основа успеха 🙂

→ Исходный код на github.

Проект Kuzya получил название в честь кота одного из разработчиков. Разрабатывается в Львовском национальном университете имени Ивана Франко и является простой (я бы даже сказал простейшей) IDE. Простейшей потому, что нацелен именно на обучение С/C++. Kuzya не имеет даже файла проекта, редактирование ведется в единственном файле компиляции. Имеется встроенный графический модуль.

→ Исходный код на github.
Описание на русском есть на sourceforge.

Также было представлено два доклада самими студентами, но к сожалению, они были не очень высокого качества. Студентам явно не хватало опыта выступлений. Единственное что могу сказать, — вовлечение студентов в opensource — правильное начинание.

Проблема участия “непрограммистов” в свободных проектах

Именно так звучало название одного из докладов на конференции. Автор на примере проблем написания документации в программных проектах рассказывал о проблемах вовлечения людей, не занятых написанием кода. По мнению автора, в отличие от программистов, “непрограммисты”, вовлекаясь в проект, не могут учиться и обмениваться опытом. Но я написанием данной статьи опровергаю тезис о трудностях “непрограммного” вклада в свободные проекты. В качестве ещё одного “непрограммного” вклада Стас Фомин belonesox предложил сделать страницу на википедии, посвященную данной конференции. Он же предложил студентам изучать и оставлять комментарии к видео с техническими докладами (видео с данной конференции также будут доступны) на 0x1.tv. Так что никаких проблем для участия нет, было бы желание! 🙂


x

Ещё Hi-Tech Интересное!

Переезд с Ubuntu на Windows 10, Hyper-V и избавление от железного маршрутизатора

Купив новый ноутбук, я с сожалением заметил, что моя любимая Ubuntu больше не поддерживает работу сенсоров и вентиляторы постоянно жужжат, делая работу не комфортной. В тоже время, если загрузить предустановленную Windows 10 Pro с оригинального жесткого диска, то наступает приятная ...

«Монстры в играх или как удивить игрока»

Привет, друзья! Уже подошёл третий материал в цикле статей, который вы встречаете очень положительно, за что вам огромное спасибо! Сегодня продолжим разбирать монстров по кусочкам Knee Deep In The Dead! И так, сегодня статья будет наполнена массой примеров и отлично ...