Серия «Преподавательские заметки»

14

Сказ о том, как гуманитарий кроссворды программировал

Серия Преподавательские заметки

Из уже трёх с половиной лет преподавания перевода и немножко просто английского языка в Российском государственном гуманитарном университете последнее время я довольно активно налегаю на кроссворды, благо это вполне увлекательный способ повторить полезные слова из пройденных нами текстов. И использую я для этого написанную своими гуманитарными руками программку на HTML (плюс, разумеется, CSS и JavaScript, но далее для краткости буду писать просто «HTML» — по расширению итогового файла). А поскольку она за время своего существования заметно эволюционировала, я хочу поделиться здесь основными вехами её истории.

Пожалуй, первый вопрос, который может возникнуть у читателя, — «почему HTML?». Причин тому несколько:

  • до этого я уже сделал пару инструментиков для работы именно на HTML;

  • итоговый файл оказывается почти невесомым;

  • .html работает везде, где есть браузер.

И вот так в один прекрасный день я открыл Visual Studio Code, скопировал предыдущую программу как шаблон, удалил всё лишнее и…


3 ноября 2023 года я созрел и таки приступил к написанию кода. Первый рабочий вариант программы вместе с пробным кроссвордом оказался достаточно ёмким и уместился примерно в 150 строк кода (без учёта дополнительно подключаемых стилей и скриптов). Сто́ит ли говорить, что он был ещё и ужасно примитивным? Между ячейками приходилось переключаться вручную, слова не были пронумерованы, сам кроссворд хранился в страшного вида массиве строк со значками «#» в качестве пустоты… Однако первый успех вдохновил двигаться дальше.


На момент 14 ноября появились первые улучшения: наконец-то кроссворды обзавелись списком вопросов, ответы на них стало возможным подсмотреть рядом с ними, а клетки стали квадратными и более аккуратными.


16 ноября на сетке кроссворда наконец-то появились номера вопросов (в упомянутых ранее массивах они ставились при помощи символов «>» и «^» для горизонтальных и вертикальных слов соответственно, а сам номер рассчитывался автоматически), то есть стало возможно быстро и легко находить их, а также я добавил выпадающий список кроссвордов, потому что даже в изначальном примитивном формате их хранения прямиком в коде страницы я сделал некоторое количество кроссвордов по переведённым для занятий текстам и между ними надо было как-то переключаться.


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


12 декабря я наконец-то приступил к созданию конструктора кроссвордов, дабы навсегда оставить расстановку всего и вся в массиве строк в прошлом. И вот первая версия конструктора уже позволила добавлять слова и редактировать их описание и положение на сетке.


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


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


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


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


31 декабря я прикрутил изменение размера вообще ко всему кроссворду, благодаря чему составление новых кроссвордов слегка упростилось за счёт большего обзора.


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


На момент 25 января поддержка цветовых схем была наконец готова: с этого дня стало возможным настраивать все четыре цвета программы, сохранять получившиеся цветовые схемы и загружать их. А при перезагрузке страницы они успешно загружались сами из local storage.


2 марта пользоваться конструктором стало ещё удобнее, благо слова теперь можно было перемещать по сетке обычным «мышиным» перетаскиванием, а поворачивать — щелчком по их номеру.


16 апреля настройки кроссвордов пополнились изменением шрифта и степени скругления ячеек. Вся это радость, конечно, тоже умеет сохраняться внутри файла, дабы не надо было всё настраивать заново при каждому запуске.


И несколько месяцев я был в целом доволен результатом. Но в ноябре 2024 произошло то, чего я сам от себя не ожидал: несмотря на большие усилия, приложенные к кроссвордам, я решил переписать их с нуля (хотя отдельные части переписывал и до этого). Недовольство недочётами собственного кода оказалось сильнее нежелания переделывать почти всё, но это того стоило, ведь я наконец-то сумел применить некоторые новые знания и просто сделать код гораздо аккуратнее, что явно никогда не будет лишним.

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


А 13 декабря для пущей красоты я добавил небольшой визуальный эффект: теперь при старте игры все клетки кроссворда подсвечиваются по диагонали начиная с верхнего левого края.


Напоследок покажу процесс от создания простейшего кроссворда до его разгадывания.

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

Желающие опробовать показанное мной самостоятельно могут найти мои творения на GitHub (старые кроссворды на данный момент лежат в папке Crosswords, а новые — в New Crosswords, позже я переименую их соответственно в Old Crosswords и Crosswords, чтобы подчеркнуть переход к обновлённому варианту).

Успехов всем в преподавании и программировании и спасибо за внимание!

Показать полностью 13 4
51

Discord: отнюдь не только игры

Серия Преподавательские заметки

(Да, этот пост — просто выговориться и поворчать. В лучшем случае — немного просветить тех, кто не знаком с программой.)

Итак, вчера Роскомнадзор заблокировал сервис для обмена сообщениями Discord. Предшествовало этому внезапное и активное очернение оного: и психике молодёжи он вредит, и чуть ли не одними только преступниками используется, и модерация не та, и общаются там дети малые словами грубыми, и вообще снести его не жалко, ибо якобы есть уже давно отечественные аналоги не хуже.

И, будь Discord исключительно «болталкой» (особенно если бы только голосовой), было бы не так обидно. Но, как справедливо отмечено рядом СМИ, он был (а где-то остаётся) удобной — во многом благодаря системности в виде серверов, каналов, веток, ролей, прав — площадкой для сообщества почти на любую тему, а потому мной, например, использовался для творчества и работы: там я создал сервер своего канала и учебный сервер. Первый прожил шесть с половиной лет, второй — три с половиной года, и за это время на обоих набралось немало ценного: шаблоны кода скриптов, обсуждение большого множества вопросов и проблем скриптинга, ссылки на различные справочные материалы и полезные советы для моих студентов.

Конечно, нельзя сказать, что все эти суммарные десять лет я каждодневно что-то выкладывал, однако нельзя отметать и всю ту фоновую, незримую работу, которая потом и выливается во что-либо общедоступное на серверах. И есть стойкое ощущение, будто принимающие решения о блокировках люди вряд ли понимают, что перечёркивают не просто голосовую «болталку», где всё мимолётно, а годы чужого труда. Труда, который даже при гипотетическом существовании полного аналога воссоздавать или переносить банально нелегко, не говоря уже об отсутствии такого желания…

Спасибо, я выговорился.

Показать полностью 3
23

Отупительный сезон

Серия Преподавательские заметки

Как сообщила первый зампред комитета по просвещению Яна Лантратова из партии «Справедливая Россия — За правду», в октябре 2024 года Государственная дума планирует рассмотреть отмену единого государственного экзамена (ЕГЭ). В далёком 2013 году я сдавал несколько предметов именно в этом формате (который с тех пор стал сложнее, например избавившись от угадайки, и опробовать который можно, к примеру, на «Решу ЕГЭ» или в «Открытом банке тестовых заданий»), а с 2021 преподаю в Российском государственном гуманитарном университете, то есть имею самое что ни на есть прямое отношение к образованию, и поэтому мне есть что сказать по этой теме.

Критика критики

Сначала позволю себе кратко прокомментировать тезисы в пользу отмены ЕГЭ, приведённые в статье выше:

  • «из-за ЕГЭ с каждым годом среди подростков растёт количество суицидов»: винить в росте числа самоубийств, по моему мнению, следует не сам экзамен, тем более что это далеко не единственная их причина, а избыточность мер контроля на нём (наблюдателей и камер, полагаю, вполне довольно) и недостаточность психологической поддержки (так, вместо спокойного настроя нередко имеют место нагнетание страха перед экзаменом со стороны некоторых учителей, завышенные ожидания родных и т.д.);

  • «проведение экзамена требует от государства значительных расходов»: сомневаюсь, что финансовое бремя настолько велико, ибо ЕГЭ служит одновременно выпускным школьным и вступительным вузовским экзаменом, а без него проведение экзаменов нужно будет организовывать в каждой школе и каждом ВУЗе отдельно;

  • «родители вынуждены тратить деньги на репетиторов»: многое может зависеть от школы, однако я сумел сдать ЕГЭ и поступить на бюджет в РГГУ, не прибегая к помощи репетиторов, то есть при нормальном качестве обучения собственных усилий вполне может быть достаточно; кроме того, при возврате к «обычным» экзаменам родители могут столкнуться с другими тратами — на взятки в школах и ВУЗах или на подготовку к тонкостям экзаменов в том или ином учебном заведении;

  • «коррупционная составляющая сместилась из сферы приёмных комиссий в сферу олимпиад»: почему-то из этого как будто делается вывод, что вместо борьбы с коррупцией в области олимпиад взяточничество нужно вернуть в приёмные комиссии, превратив сдачу экзаменов в разгул взяток и блата;

  • «формат ЕГЭ не позволяет раскрыть творческий потенциал школьников»: неясно, что вообще понимается под творческим потенциалом и как он должен раскрываться на экзаменах, особенно если оные подразумевают возможность субъективной оценки;

  • «происходит обезличивание абитуриента»: непонятно, почему обезличивание, то есть анонимность, причислено к минусам ЕГЭ, в то время как это, напротив, большой плюс, о чём отдельно речь пойдёт дальше;

  • «натаскивание на решение экзаменационных заданий»: вместо этого нам фактически предлагается такое натаскивание увеличить: на выпускные экзамены в школе и на вступительные экзамены в ВУЗе (причём в каждом они будут свои) — в итоге затраты времени, сил, денег и нервов станут только больше.

Что хорошего дал ЕГЭ?

Почему же я так ратую за единый государственный экзамен? Став преподавателем и начав проверять письменные работы, в том числе экзаменационные, я очень чётко осознал, как нелегко в этом процессе добиться максимальной честности, нелицеприятия и прозрачности. Нравится это кому-то или нет, но, похоже, единственный способ к этому приблизиться — брать пример с роботов, ведь им людская предвзятость не присуща. А что для этого нужно на практике? Например, разработка ясной и понятной системы оценки. Так, если говорить о моём опыте, на основе уже имевшейся на кафедре теории и практики перевода Института филологии и истории РГГУ системы оценки письменных переводов я написал калькулятор баллов «Баллда», а затем, ощутив, что мне и этого мало, — собственную систему «Баллабол».

«Баллабол» в действии

«Баллабол» в действии

Идеальны ли эти системы? Нет, однако это большой шаг вперёд по сравнению с выставлением оценок наугад, по принципу «ну, вот этому я бы поставил 75… или 72… или 73», когда педагог действует по некоему «наитию», «внутреннему ощущению», в котором даже у мастера своего дела остаётся место субъективности.

Такой шаг вперёд в сравнении с «традиционными» экзаменами сделал и ЕГЭ: более формальный и чёткий подход к оцениванию работ и составлению заданий позволяет резко снизить вероятность, что одинаковые ответы двух разных людей будут оценены по-разному только потому, что так «получилось» из-за человеческого фактора. У формализации, разумеется, есть и обратная сторона: для некоторых заданий однозначные критерии придумать весьма непросто, поэтому порой они оказываются «сыроватыми» и их приходится по возможности дорабатывать.

Другой шаг вперёд — прозрачность: ЕГЭ, как и мой «Баллабол», даёт возможность ознакомиться с результатом проверки, узнать баллы по каждому заданию и изучить, какие именно были допущены ошибки. А значит, исключены ситуации, когда оценка есть, а понимания, как её ставили, нет. Более того, ЕГЭ предусматривает ещё и возможность апелляции, где можно побороться за повышение баллов, если есть основания считать, что их недодали.

Наконец, ещё один большой плюс ЕГЭ — анонимность: сдающий не знает, кто будет проверять его работу, а проверяющий — чью работу он оценивает, благодаря чему вероятность субъективщины снова снижается (не до нуля, однако недостижение идеала не есть повод отказываться от достигнутого). Ведь, когда перед тобой работа не конкретного Васи Пупкина, а кого-то под случайным номером, у тебя попросту не остаётся ассоциаций и впечатлений, мешающих более справедливой оценке.

В итоге мы получаем в целом весьма удобный и эффективный формат экзамена, который остаётся лишь достойно воплощать в жизнь и при необходимости дорабатывать и который в значительной степени уравнивает людей в оценке их знаний. Нам же предлагают от него отказаться, но ради чего? Чтобы экзаменов стало только больше и все проводили их кто во что горазд, ни за что не отвечая и множа блат и взяточничество? Чтобы вместе со знаниями, а то и вместо них оценивали внешность, голос, имя, фамилию, отчество, знак Зодиака, материальное положение, происхождение, место жительства и другие никак не связанные со знаниями признаки? Чтобы высшее образование снова стало привилегией «элитных сословий» и началась деградация страны? Могут ли сторонники отмены ЕГЭ вообще предложить что-то лучшее (если они, конечно, заинтересованы в лучшем)? Сомневаюсь.

Показать полностью 1
14

Как преподавателю упростить жизнь себе и студентам

Серия Преподавательские заметки

Предупреждение: заметка рассчитана на людей с некоторыми ± начальными знаниями электронных таблиц, а именно общего форматирования и написания формул. Если вдруг Вы этими знаниями не обладаете, не отчаивайтесь и попробуйте их обрести, оно того стоит. А чтобы изучать Excel или подобные программы было попроще, может помочь аналогия с полем игры «Морской бой».

Преподаванием в университете я занимаюсь, если считать и начальный период чисто почасовой небольшой нагрузки, с весны 2021 года. За это время, особенно когда групп и предметов стало больше, я уже успел вкусить самой разной неприятной рутины, и уже несколько раз, когда неприязнь к ней, перфекционизм и лень образовывали гремучую смесь, я рожал на свет тот или иной способ слегка упростить себе работу: от внесения электронных адресов групп в контакты в Windows до создания собственных программок на Python, C# (в Windows Forms) и HTML (в связке с CSS и JavaScript).

Но сейчас я хочу поделиться штукой, которая снискала одобрение пока что всех без исключения моих студентов и которую сделать может почти каждый преподаватель, ибо создаётся она в Excel’е (или аналогах). Знакомьтесь: это электронная таблица с домашними заданиями, датами занятий и нужной всякому студенту статистикой, то есть успеваемостью и баллами:

Дополнение (за напоминание об этой детали спасибо пользователю @mal333): таблицу лучше сразу создавать в облачном хранилище по вкусу (Google Документы, Яндекс и пр.), потому что при переносе туда Excel’евской таблицы могут быть проблемы с совместимостью (например, с форматированием).

Итак, давайте пройдёмся по всем основным пунктам таблицы, чтобы разобраться, как состряпать подобную самостоятельно.

На самом верху — общая информация: направление подготовки, курс и номер группы. Затем следует номер семестра и наименование предмета. Далее — шапка таблицы, в целом она универсальна. Если же, например, у какого-нибудь преподавателя вдруг нет семинаров/лекций или, напротив, итоговых работ, соответствующие столбцы можно вовсе не создавать либо, если так бывает не всегда, заполнить максимумом (у нас оный составляет 60 баллов за семинары и 40 за зачёт/экзамен). Если студентов не так много и остались лишние строки, их (строки, разумеется) лучше удалить со сдвигом вверх. Над датой у меня располагается домашнее задание, причём в ячейку, напоминаю, мы можем вставить не только обычный текст, но и ссылку, к примеру на документ, который надо перевести. А вот в самом низу содержится кое-что более необычное — счётчик общего числа занятий. Поясню, почему и зачем он нужен.

Если учебный процесс максимально чёткий, а расписание стабильно, аки восход солнца, то эта часть таблицы, наверное, и не нужна: преподаватель может просто поделить максимум баллов на заранее известное число занятий и сразу знать, сколько максимально баллов будет за каждое занятие. У нас всё не настолько предсказуемо, посему успеваемость я оцениваю так: полноценная работа на одной паре — один балл, как бы 100% производительности. И уже в конце я подсчитываю, сколько в итоге занятий состоялось, из чего вытекает расчёт оценок за семинары. К примеру, вышло 30 пар, а баллов максимум 60, следовательно, за одно занятие можно получить не более двух баллов. И если некий студент ходил на все пары и работал хорошо, то его 30 единичек в итоге превратятся в заветные 60 баллов.

Теперь встаёт вопрос собственно подсчёта. Не вручную же его проводить в век высоких технологий! Так что каждую формулу этой таблицы я тоже разберу и объясню. Итак, дорогой читатель, если Вам нужен такой же счётчик занятий, в ячейке справа от «Числа пар», где будет итог, вводим нечто подобное:

=СУММ(E27:XFD27)

Где СУММ — функция суммирования, E27 — номер ячейки правее «формульной» (в Вашем случае может быть другим, у меня вот сами занятия начинаются как раз в столбце E), далее двоеточие, обозначающее, что суммировать надо диапазон чисел, а страшное XFD27 — номер гипотетически самой последней ячейки в этой же строке. На деле туда вряд ли кто-то доберётся живым, и выходит, что функция суммирует указанную ячейку со всеми, которые правее неё. Обязательно проверьте, чтобы номер строки в конце совпадал у обоих элементов функции: у меня это E27 — XFD27. Ну а количество пар в каждый конкретный учебный день (правее красной ячейки итога, под каждым днём) пока придётся заполнять самостоятельно. Зато складываться они будут автоматически.

Теперь перейдём к счётчику баллов за семинары (в моём примере он начинается в выделенной ячейке, где число 60, на пересечении «Студента 1» и «Семинаров»):

=СУММ(E7:XFD7)/D$27*60

Логика здесь та же. В качестве начальной ячейки диапазона указана E7, поскольку, повторюсь, именно в столбце E в моём случае начинаются сами пары, а в качестве конечной — XFD7 (т.е. опять обе на одной строке, у меня — седьмой). Теперь важный момент: если Вам счётчик занятий не пригодился, в формуле будет достаточно суммы, то есть Вашего аналога =СУММ(E7:XFD7), потому что в ней у Вас и так выше максимума получиться не должно. А вот если счётчик оказался нужен, то продолжаем формулу: получившуюся сумму делим на значение той ячейки, в которой подсчитывали общее число прошедших занятий. Перед номером этой ячейки не забываем поставить знак «$», благо именно он при «протягивании» формулы на другие строки таблицы не даст Excel’ю автоматом вписать D28, D29 и т.д. Что же мы получили на этом этапе?

Вспоминаем пример отличника выше: если некий студент на каждой паре из условных 30 (в идеале подсчитанных с помощью первой формулы) успешно старался и зарабатывал по баллу ровно, у него будет 30 баллов. 30 заработанных «очков» ÷ 30 занятий = 1 (100%). Если бы он половину прогулял, вышло бы 15 ÷ 30 = 0,5 (50%). Найденный процент успеваемости после этого умножаем на максимальный балл за семинары.

Наконец, самое простое — итоговый итог. В нём формула уже примитивнейшая:

=B7+C7

То бишь складываем значения ячеек в столбцах «Семинары» и «Итоговое задание». Это и будет вынесенный студенту вердикт. В случае моей таблицы — по стобалльной системе. Всё. Потом «растягиваем» формулу на все нужные ячейки, вписываем студентов, заполняем даты занятий, домашние задания — и выкладываем таблицу в какое-нибудь хранилище в Интернете. Ах да, советую сперва подготовить шаблон, чтобы потом копировать его и заполнять конкретикой.

Вот такая штука. Да, для создания подобной таблицы придётся попотеть, но я надеюсь, что моя заметка в этом поможет. Что мы получаем, соорудив такую таблицу? Преимуществ немало:

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

  2. Вместо постоянной отправки писем с домашкой достаточно будет один раз отправить студентам ссылку на таблицу, далее они сами будут в неё заходить за обновлениями.

  3. В одном месте будет сосредоточена вся информация по предмету, полезная для преподавателя, студентов и даже деканата (из неё удобно переносить всё в ведомость).

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

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

Спасибо за внимание и успехов!

Показать полностью 2
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества