Differences between revisions 3 and 4
Revision 3 as of 2018-01-14 18:03:43
Size: 1480
Editor: FrBrGeorge
Comment:
Revision 4 as of 2018-01-14 18:42:47
Size: 4416
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
 * Что за спецкурс
 * Домашние задания и EJudge
В 2017 году (осень) мы решили [[LecturesCMC/PythonIntro2017|перезапустить]] спецкурс 2014 года по Python. Причин было много — наработанная практика за предыдущие два учебных года (базовый курс в Севастопольском филиале МГУ), перевод на Python3, некоторая реструктуризация изложения. Впрочем, подход остался тем же: мы читаем авторское «[[py3tut:|Знакомство с Python3]]», дополняем его объяснениями и примерами и решаем множество практических домашних заданий (36 задач на написание программы или функции). Лекции [[https://www.youtube.com/playlist?list=PL6kSdcHYB3x7VJXiCA8OjYAiRBHi7mZTJ|записывались на видео]] — в основном, скринкаст с небольшой говорящей головой.

Условия домашних заданий (в среднем по 3 к лекции) и некоторые подсказки по решениям выкладывались [[LecturesCMC/PythonIntro2017/HomeworkRules|на сайте]], а вот проверку мы доверили факультетской системе проведения олимпиад [[https://ejudge.ru/|EJudge]]. Мы использовали только одну функцию EJudge: программе участника скармливается на стандартный ввод некий текст из набора входных тестов, а результат сравнивается с эталонным.

К сожалению, в курс не входили практические занятия под чьим-либо руководством, так что требования «красоты» или «лаконичности» программ-решений пришлось опустить — не стоит оценивать то, чему не учил.

Видео к курсу регулярно [[https://www.youtube.com/playlist?list=PL6kSdcHYB3x7VJXiCA8OjYAiRBHi7mZTJ|выкладывались в сети]], регистрация на «соревнование» в EJudge была свободной, так что на время подведения итогов у нас было 131 зарегистрированный участник соревнования (включая меня), из которых примерно половина (включая меня :) ) «дошла до финиша», т. е. решила более ⅔ задач. Всего было более 6000 попыток сдать задачу, из которых примерно половина была, с точки зрения EJudge, успешной.
 * Объём работ
'''TODO'''
Line 11: Line 18:
 * Объём работ

Как я делал проверку копипасты для спецкурса по Python3 и что из этого вышло


TODO Пока только план

Часть первая: why?

В 2017 году (осень) мы решили перезапустить спецкурс 2014 года по Python. Причин было много — наработанная практика за предыдущие два учебных года (базовый курс в Севастопольском филиале МГУ), перевод на Python3, некоторая реструктуризация изложения. Впрочем, подход остался тем же: мы читаем авторское «Знакомство с Python3», дополняем его объяснениями и примерами и решаем множество практических домашних заданий (36 задач на написание программы или функции). Лекции записывались на видео — в основном, скринкаст с небольшой говорящей головой.

Условия домашних заданий (в среднем по 3 к лекции) и некоторые подсказки по решениям выкладывались на сайте, а вот проверку мы доверили факультетской системе проведения олимпиад EJudge. Мы использовали только одну функцию EJudge: программе участника скармливается на стандартный ввод некий текст из набора входных тестов, а результат сравнивается с эталонным.

К сожалению, в курс не входили практические занятия под чьим-либо руководством, так что требования «красоты» или «лаконичности» программ-решений пришлось опустить — не стоит оценивать то, чему не учил.

Видео к курсу регулярно выкладывались в сети, регистрация на «соревнование» в EJudge была свободной, так что на время подведения итогов у нас было 131 зарегистрированный участник соревнования (включая меня), из которых примерно половина (включая меня :) ) «дошла до финиша», т. е. решила более ⅔ задач. Всего было более 6000 попыток сдать задачу, из которых примерно половина была, с точки зрения EJudge, успешной.

  • Объём работ

TODO

  • Почему проверка копипасты важна: особенности с/к

Часть вторая: how?

  1. PEP8-фикация (autopep8)

  2. Расстояние Левенштейна (editdistance)

  3. Абстрактное синтаксическое дерево разбора Python3 кода (ast.html)

  4. Удаление имён и компрессия

Получившийся инструмент.

Часть третья: so what?

  • Сама таблица
  • Кластеры решений
    • Мало кода
    • Очевидный алгоритм
    • Списывание с доски
    • Реальная копипаста
  • Выводы: всё хорошо, но нет

Часть четвёртая, заключительная: till when?

Как бороться с копипастой?

  1. Пресекать?
  2. Параметрические задачи?
  3. Смена мотивации?

FrBrGeorge/PythonCopypasteProof (last edited 2020-12-28 14:57:57 by FrBrGeorge)