«АиАЯ?» — сказала говорящая голова

Это уже второй мой первый семестр по курсу «Алгоритмы и алгоритмические языки» (сокращённо АиАЯ), который я читаю дистанционно для Севастопольского филиала МГУ. Курс базируется на Python3. Сочетание новизны программы, специфики языка и особенностей севастопольской аудитории породило целый букет спецэффектов, но о них после. Возможно, в виде доклада на конференции «Свободное программное обеспечение в высшей школе». В прошлом году я слишком занят был самой программой, а вот сейчас есть время рассказать о том, как проходят лекции (одну из которых я здесь выкладывал уже) и практика, что в них хорошего и что не очень.

Структура курса

Оценка по курсу выставляется на основании

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

Параллельно (и независимо от лекций) проходит т. н. «практикум на ЭВМ», который проводит преподаватель филиала на месте. По практикуму полагается зачёт.

Как всё происходит

Лекции

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

В лекционном классе есть небольшая маркерная доска, очень качественные камера и аудиторный микрофон и здоровенный телевизор для передачи картинки и звука. В студенческом — несколько рядов парт (человек на 30) и опять-таки здоровенный телевизор и качественные камера и аудиторный микрофон, так что голоса с мест слышны вполне отчётливо.

Аппаратура позволяет передавать картинку не только с камеры, но и с преподавательского компьютера, а также смешивать их в разных пропорциях (экран побольше, камера поменьше, если главное — на слайдах и наоборот, если на доске).

Что не работает в этих условиях? Некоторые лекторские приёмы — использование «длинной» доски (чтобы было куда смотреть/ссылаться позже); энергичная беготня с танцами вдоль доски и вглубь аудитории (переключение внимания, а ещё слушатели вертят головами и разгоняют кровь в шеях и, соответственно, мозгу).

В лекциях я активно использую содержимое «лекций» Moodle в качестве слайдов, и ещё активнее — живую демонстрацию (интерпретатор командной строки Python делает этот процесс простым и понятным). Так что всё равно приходится перед камерой сидеть и изображать говорящую голову. Которая, кстати сказать, в камере выглядит куда более осмысленно, чем лектор в живой аудитории, который сгорбился над своим ноутбуком и что-то покрикивает в экран, не глядя на слушателей.

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

[........................]
[........................]
[.......Телевизор........]
[........................]
[........................]
[.........камера.........]
      [_____________]
      [___Монитор___]
      [_____________]
      [_____________]

Кстати, лично мне (я близорук, и очками это исправляется не до конца) оказалось даже удобнее налаживать обратную связь со слушателями именно так, чем вживую в большой аудитории. Потому что в большой аудитории не слишком хорошо различаю лица и в первом ряду, а тут я вижу всех.

Практические занятия

Это самая сложная и стихийно сложившаяся часть, которая, тем не менее, оказалась довольно эффективной.

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

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

Семинар начинается с того, что студенты и преподаватели регистрируются в чате Moodle. Там преподаватель объявляет задания, мы задаём друг другу вопросы и отвечаем на них, а время от времени и просто легкомысленно болтаем. Все сообщения чата Moodle хранит, так что в конце семестра можно посмотреть, кто как себя вёл на семинарах, хотя я уже и так помню :).

Следующее действие: все подключаются к рабочему столу демо-машины в режиме «только просмотр», а преподаватель — в режиме дистанционного управления. Рабочий стол «доски» специально сделан небольшим, чтобы это окон не занимало много места, и студент мог самостоятельно работать, поглядывая на демонстрационный экран, где я что-нибудь объясняю и показываю. В такой форме это работает заменой проектора, причём лучшей заменой: во-первых, всё видно, независимо от расстояния и положения, а во-вторых в случае чего можно сделать Copy+Paste прямо с демо-экрана.

Когда несколько студентов решили предложенное им упражнение (о чём они сообщают в чате), кто-то из них «идёт к доске», т е получает доступ к рабочему столу демо-машины в режиме управления и пишет/отлаживает/запускает там свою программу, а мы ему помогаем. Опять-таки, Copy+Paste работает, и вполне можно быстро продемонстрировать готовое.

Контрольные

Контрольные проводятся в том же компьютерном классе, с тем же открытым чатом, в котором я официально даю ссылку на соответствующий модуль типа «Тест», ограниченный по времени одной парой (иногда чуть побольше). В модуле — три небольших задачки. Я стараюсь, чтобы эти задачки были разные для всех студентов. Для этого я пишу (на Python3, конечно!) программы-генераторы условий. Студент запускает такой генератор, тот ему выводит случайное число — «номер варианта», а затем — условие задачи. Условие в общем виде — параметрическое, а конкретный вариант содержит комбинацию значений параметров на основании датчика псевдослучайных чисел, запущенного как раз с «номера варианта». Таким образом, сгенерированное условие задачи (которое студент должен скопировать в ответ), можно получить и просто повторно запустив генератор с параметром-номером варианта.

Экзамен

Устный экзамен — далеко не единственное мероприятие, влияющее на оценку в семестре. Фактически, экзамен — это возможность повысить или понизить уже сформированную оценку на балл, остальное выставляется «автоматом». Задача экзамена сужается до определения «кто что понял из прошедшего курса». Для того, чтобы это выяснить, студенты (желающие повысить или понизить оценку) объединяются в небольшие группы (7 ±2 человека), и разговаривают с преподавателем по всем темам курса (часа два с небольшим). При этом пользоваться можно чем угодно, всё равно разговор происходит в реальном времени, и всегда становится понятно, насколько уверенно студент чувствует себя в том или ином разделе курса.

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

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

Дистанционные инструменты и их применение

Отдельно останавливаюсь на том, с какими техническими средствами мы работаем. Хочу обратить внимание на то, что в качестве программной платформы практически везде используется линейка дистрибутивов «Альт образование». Весьма показательно оценить процедуру развёртывания о объём доработок на месте (они были, и приличные): это будет план по выпуску следующей версии дистрибутива.

Аудио-видео

Лекции читаются с использованием специализированного видеооборудования, которое:

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

Практические занятия — совсем другая статья. Студенты работают на компьютерах, и скорее нуждаются в комментариях и демонстрациях, чем в голосе лектора. Правда, оказалось, что Moodle-овского чата и «доски» для практики недостаточно, т. к. довольно регулярно надо что-то объяснять. Так что пришлось организовать «на скорую руку» аудиосвязь посредством Google Hangout. Причём в хенгаут этот я сам захожу с обеих сторон — и со своего компьютера, и в преподавательского в Севастополе, с помощью удалённого доступа к рабочему столу — под разными входными именами. А потом болтаю сам с собой! На крайний случай есть микрофон и в компьютерном классе, но пользоваться им на практике, когда у каждого есть вопросы, нельзя. Лучше чат.

Moodle

Базовый ресурс для курса — факультетский Moodle. Каюсь, я не использую и десятой доли возможностей этой платформы, главным образом потому, что любая подготовка материалов — очень ресурсоёмкое занятие.

Из Moodle используются четыре типа модулей:

  1. «Лекция». Фактически, в режиме слайдов: между разделами всегда только один переход. Сами разделы служат в основном для группировки по темам и для того, чтобы избежать эффекта tl;dr. «Лекции» служат одновременно и демонстрационным материалом, и конспектом при подготовке к экзамену.

    • Несколько начальных тем (нормальные алгорифмы Маркова, машина Тьюринга, синтаксические диаграммы) сопровождаются соответствующими эмуляторами, которые написаны на JavaScript и запускаются прямо в браузере. Поскольку страницы Moodle можно редактировать непосредственно в виде HTML, встроить эмуляторы в них технически несложно. И я даже так и сделал, превозмогая трудности. В эмуляторах же можно решать и домашние задания по этим темам.

      • <!> Для двух других тем (общерекурсивные функции и БНФ) тоже хочется иметь такие эмуляторы.

    • Формат лекции подразумевает вопросы для самоконтроля, а прохождение этих вопросов сопровождается оценкой. Однако все вопросы скрыты до сессии: лекции посмотреть можно, оценку получить нельзя
  2. «Задание». Задание в Moodle предполагает написание некоторого «эссе», в насем случае — программы. Оценивание происходит вручную. Программы-решения прикладываются к ответу. Если задача проходит через систему тестирования заданий, ответом является ссылка на успешное выполнение всех тестов в этой системе.
  3. «Тест» используется для контрольных. Включает в себя несколько «вопросов» из общего «банка вопросов» Moodle, однако так вышло, что задачи все тоже типа «эссе», т. е. на написание непосредственно программ: опросники и иные типы вопросов отчего-то использовать не удалось
  4. «Чат». Используется для проведения практических занятий. Представляет собой типичный чат, через который я дублирую наиболее важные вопросы и утверждения, сделанные устно. Были попытки использовать для семинара другие разработанные для этой цели инструменты (например, форум специального вида), но дело упёрлось опять-таки в подготовку большого объёма материала.

Moodle входит в состав серверной части «Альт Образование», так что технологически нам есть чем подпереть методику с этой стороны. В Севастополе мы, конечно, пользуемся факультетским Moodle, во-первых, для отчётности, а во-вторых так и проще, потому что у факультетского Moodle есть свои администраторы, которых можно попросить вместо того, чтобы всё делать самому.

EJudge

Больше половины домашних заданий оформлено в виде задач для EJudge с тестами. EJudge — система проведения олимпиад, но для формальной проверки домашних заданий вполне подходит.

Кстати, оказалось, что EJudge можно управлять не только через перегруженный всякими возможностями WEB-интерфейс, но и из командной строки. Как минимум, из командной строки можно раскладывать задачи и тесты к ним, решения задач, генерировать файлы ответов, и хранить это всё в GIT-е.

EJudge используется в первую очередь как фильтр: как это ни странно, студенты время от времени пытаются сдать заведомо не работающее или работающее только на одном примере решение. Множество тестовых примеров, на которых должно работать решение в EJudge, исключает такую возможность.

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

EJudge также входит в состав серверной части «Альт Образование», но мы, опять-таки пользуемся факультетским, по тем же причинам.

Компьютьерный класс

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

Кроме того, организован идентичный студенческим выделенный компьютер (в действительности — виртуальная машина, но это не имеет значения), экран которого транслируется на все студенческие компьютеры. Размер этого экрана существенно меньше размера монитора, так что студент всегда может поглядывать на пример, и параллельно делать что-то самостоятельно. Машина эта называется «Доска».

Для трансляции/просмотра используется сервер и клиенты http://tigervnc.org/. Преподаватель запускает клиент в режиме полного доступа к доске, а студенты — в режиме только просмотра. По договорённости через чат «к доске выходит» тот или иной студент, получая полный доступ, и показывает товарищам решение задачи (товарищи могут ему помогать, если что).

Полученная схема уже второй год успешно работает с преподавательским компьютером (на котором запускается только vncviewer) в Москве и остальными компьютерами — в Севастополе. Если и были какие-то сбои в работе сети, пользователи их не видели :), только я.

Методические приёмы

Некоторые хитрости/подробности, которые, как мне кажется, помогли нам в этом семестре — вперемежку с симметричными недостатками {i} .

Чего не хватает

Итак, что же хотелось бы ещё иметь в будущем учебном году? Описываю идеал, конечно.

А то я, признаться, порядком уже устал в одиночку за всем этим присматривать.

Впрочем, я совсем не один, нет.

Спасибо:

FrBrGeorge/RemoteClasses2016 (последним исправлял пользователь FrBrGeorge 2016-12-21 20:06:35)