В будущем традиционное обучение точным наукам может быть дополнено не только MOOC (Massive Open Online Courses) курсами, но и курсами в «следящих» интеллектуальных обучающих программах. Такие программы способны до некоторой степени оценить решение студента на завершенность и правильность, а также предоставить подсказки по решению. На рисунке ниже — интерфейс ввода решения задачи в «следящей» обучающей программе, разработанной нашим коллективом:
Некоторое представление об алгоритмах, лежащих в основе подобных программ, можно получить тут.
В разработанной программе доступно два интерфейса ввода решения задачи: «трудный» и «легкий». Ниже более подробно рассказывается о каждом из них.
«Трудный» интерфейс
В качестве шагов решения студент вводит в программу формулы в LaTeX-подобном синтаксисе. Синтаксис ввода формул был несколько упрощен. Например, ввод матриц осуществляется так:
[1,2;3,4;5,6]
Во время ввода формулы динамически формируется ее визуальное представление в форме ввода шага. После того, как студент введет формулу, он нажимает на кнопку «Проверить шаг». Если шаг правильный, то проверяемая формула перемещается в область с заголовком «Решение». В противном случае некоторые элементы формы ввода шага окрашиваются в красный цвет.
В любой момент студент может посмотреть на правила ввода формул, нажав на кнопку с соответствующим названием. Правила ввода формул были написаны максимально кратко, в виде примеров с пояснениями:
У читателя может возникнуть вопрос, почему мы не встроили в программу визуальный редактор формул. Дело в том, что в таком случае студенты отправляли бы на проверку слишком много формул, правильность которых было бы достаточно сложно установить. К сожалению, для того, чтобы стало возможным программно оценить ход рассуждения студента, необходимо накладывать ограничения на способ ввода шагов решения. Строгость ограничений по мере развития кодовой базы программы можно снизить.
В текущей версии программы действуют такие ограничения (это фрагменты из справки по интерфейсу программы):
На следующем рисунке видно, что шаг студента признан неправильным, в силу того, что студент использовал непредусмотренное в настройках задачи обозначение:
Поскольку студент всегда может ввести непредусмотренный автором курса шаг решения, в программе был реализован механизм жалоб, суть которого в следующем. Если, по мнению студента, программа неправа, не засчитывая его шаг как правильный, то он может нажать на кнопку «Пожаловаться». После этого шаг будет засчитан как правильный. Впоследствии статус шага может быть изменен преподавателем. Преподавателю в административной панели приложения доступны отчеты о решениях задач, где такие шаги выделяются цветом и наделяются особым статусом:
«Легкий» интерфейс
При использовании этого интерфейса студент прежде всего выбирает нужный тип шага (типы шагов вносятся в программу автором курса):
После этого в форму ввода шага подгружается шаблон формулы:
Далее студент заполняет пропуски в шаблоне, вводя цифры руками, а обозначения перетаскивает из окна «Обозначения»:
Тестирование обоих интерфейсов
Можно сказать, что юзабилити-тестирование (вернее, его подобие, насколько позволяли силы и сроки) проводилось два раза. В первый раз было поймано несколько студентов-очников и вечерников психологического факультета одного госуниверситета. Студентов попросили пройти туториалы, которые помогают освоить интерфейс программы. Туториалы включали в себя теоретический материал и две задачи. Были собраны отзывы студентов, кроме того, были проанализированы видеозаписи работы студентов в программе. На видео фиксировалось не только то, что происходило на экране студента, но и его лицо.
Во второй раз в обучающей программе работала уже целая группа студентов-очников, которой предложили возможность получить оценку автоматом за экзамен в случае успешного решения задач в обучающей программе. На этом этапе анализировались видеозаписи работы студентов, а также их решения.
Отзывы студентов после первого «юзабилити-тестирования»
Было опрошено 10 студентов. Ниже приводятся полученные отзывы. Из отзывов мы, во-первых, исключили малоинформативные типа «все понравилось, замечаний нет», во вторых, исключили то, что было в программе впоследствии исправлено. Данные об успеваемости получены от участников опроса.
1. пол: жен, успеваемость: ср
Что понравилось: есть возможность решить задание человеку с нехваткой знаний. Подсказки сильно помогают. Что не понравилось: слишком долго решать, много надо нажимать на кнопки. Вручную, например, решить квадратное уравнение можно быстрее, чем с помощью данной программы.
2. пол: жен, успеваемость: выс
Программа удобна тем, что имеет все необходимое в сети. Не нужно устанавливать и ждать. Работает быстро. С квадратными уравнениями пришлось потрудиться только лишь в вводе принятых обозначений. Легкая, доступная, удобная
3. пол: жен, успеваемость: выс
Понравилось: что есть все необходимые функции, есть подсказки. Работает без сбоев. Не понравилось: слишком долго нужно вводить шаги.
4. пол: муж, успеваемость: ср
Очень удобно, что меню «добавить шаг, получить подсказку» и подсказки двигаются вместе с курсором на экране так, что их всегда видно. Неудобство вызвало то, что когда ошибка, компьютер выделяет все выражение красным, а не то место, которое не может считать, приходится искать ошибку.
5. пол: жен, успеваемость: выс
Удобно, только есть вероятность выполнения лишней работы, в том случае, когда коэффициенты = 1, а на них надо делить или умножать. Понравилось: есть подсказки.
6. пол: муж, успеваемость: ср
Понравился привычный ввод математических знаков и знаков функций. <...>
7. пол: жен, успеваемость: выс
Понравилось, что можно быстро и удобно вводить символы с помощью методички. Удобный интерфейс, все достаточно понятно. Когда привыкаешь к раскладке макбука манипулировать получается быстро. <...> Когда ответ неправильный – нет комментариев к ошибке – было бы удобнее, если бы была такая функция. Привычнее считать на листе, так что, думаю, если бы мне предложили пользоваться программой сейчас – я бы сначала решала на листе, а потом вписывала результаты в окна. Если бы в школе была такая программа, возможно, было бы легче учиться.
Отметим, что к моменту сбора отзывов в окне выбора типа шага показывались не только типы шагов из рекомендованного преподавателем решения задачи, но и 2-3 случайно выбранных из базы данных типа. Предполагалось, что таким образом удастся немного “затуманить” план решения задачи для студента, чтобы он сам думал про каждый тип шага, действительно он здесь нужен или нет. Тестирование показало, что наличие такого выбора приводит в замешательство даже самых продвинутых студентов. Многие студенты долго читали название каждого типа шага, пытаясь понять, что он собой представляет, и до конца не были уверены в своем выборе. Поэтому в следующей версии программы «лишних» типов уже не было.
Результаты второго «юзабилити-тестирования»
В тестировании принимало участие 23 студента. Участвовали как студенты с высокой успеваемостью, так и студенты со средней или низкой успеваемостью (оценки успеваемости вычислены на основе оценок за домашние работы). Поскольку данные для юзабилити-тестирования были собраны косвенным путем (не оно являлось первоочередной целью работы студентов в программе), то на основе собранных данных нельзя делать какие-либо выводы. Но зато можно выдвинуть гипотезы :)
Студентам было предложено пройти обучение интерфейсу программы, а затем попытаться решить одну или две задачи различной сложности. Многие студенты, для того, чтобы получить оценку повыше, старались решить все три задачи. Те, кто не смог полностью решить задачу в обучающей программе, сдавали преподавателям листочки пс решениями.
Среднее время обучения интерфейсу программы заняло у студентов с высокой успеваемостью 23 мин, а у студентов со средней или низкой успеваемостью — 32 мин. Двое студентов с высокой успеваемостью пролистали справку по интерфейсу программы, но упражнения делать не стали (один из студентов впоследствии не решил ни одну из задач). Не все студенты проходили туториалы по интерфейсу так, как нам хотелось бы. Многие студенты, прежде чем решать задачи, помогающие освоить интерфейс, пролистывали все страницы туториалов, пытаясь понять, что их ожидает дальше. Прыгали по страницам туториалов то вперед, то назад. Были энтузиасты, прорешивавшие задачу до конца и изо всех сил добивавшиеся оценки 100%, несмотря на то, что на странице туториала их просили ввести один или два шага и переходить к следующему разделу.
Вот формулировки задач, помогающих освоить интерфейс:
Некоторые студенты пропускали обучение по «легкому» или «трудному» интерфейсу и проходили материал только по тому интерфейсу, в котором собирались решать. Другие студенты пропускали какие-то отдельные моменты и до конца разбирались с тонкостями ввода данных в программу уже в процессе решения задач. Один студент достаточно интересно изучал синтаксис ввода формул. Этот студент добавлял то один, то другой знак в сложную формулу и смотрел, как изменялось ее визуальное представление, как бы отлаживая ввод шага.
Ниже приводятся данные по результатам решения задач средней и высокой сложности. Значение показателя "% неправильных шагов" вычисляется как отношение количества шагов решения студента, которые обучающая программа пометила как неправильные, к общему количеству шагов решения студента. Если студент знает, как решать задачу, то соответствующее значение показателя характеризует трудность ввода решения для данного интерфейса программы и текущих ограничений на форму вводимых им формул. В таблицах с помощью обозначений F, A, I закодированы студенты с высокой, средней и низкой успеваемостью.
Таблица 1. Данные по решениям задачи «Расстояние между векторами»
№ | Успеваемость | Решена, % | Затрач. t, мин. | % неправильных шагов | Общее кол-во шагов |
1 | I | 1 | 29 | 0.52 | 27 |
2 | I | 1 | 19 | 0.44 | 16 |
3 | A | 1 | 12 | 0.09 | 11 |
4 | A | 1 | 24 | 0.76 | 29 |
5 | A | 1 | 29 | 0.56 | 23 |
6 | A | 1 | 33 | 0.42 | 12 |
7 | A | 1 | 21 | 0.6 | 30 |
8 | F | 1 | 13 | 0.22 | 9 |
9 | F | 1 | 10 | 0.1 | 10 |
10 | F | 1 | 7 | 0 | 10 |
11 | F | 0 | 1 | 1 | 2 |
Таблица 2. Данные по решениям задачи «Скалярные произведения в разных базисах»
№ | Успеваемость | Решена, % | Затрач. t, мин. | % неправильных шагов | Общее кол-во шагов |
1 | I | 0.9 | 33 | 0.46 | 28 |
2 | A | 1 | 35 | 0.62 | 29 |
3 | A | 0.8 | 33 | 0.12 | 17 |
4 | A | 0.5 | 23 | 0.45 | 22 |
5 | A | 0.5 | 80 | 0.41 | 54 |
6 | A | 0.9 | 26 | 0.17 | 30 |
7 | F | 0.5 | 80 | 0.76 | 49 |
8 | F | 0.5 | 43 | 0.73 | 25 |
9 | F | 0.5 | 18 | 0.25 | 16 |
10 | F | 0.5 | 39 | 0.2 | 15 |
11 | F | 0.2 | 70 | 0.79 | 29 |
12 | F | 1 | 78 | 0.61 | 18 |
13 | F | 0.7 | 63 | 0.8 | 25 |
14 | F | 1 | 32 | 0.32 | 34 |
15 | F | 1 | 22 | 0.17 | 23 |
Механизмом жалоб воспользовались только те студенты, которые решали наиболее сложную задачу. «Жаловались» на программу 4 студента, при этом жалобы были обоснованы не во всех случаях. Некорректно воспринятые программой шаги встретились в решениях у 8 студентов, всего было 18 таких шагов. Анализ этих шагов показал:
- наиболее распространенной причиной были непредусмотренные формулы (т.е. не все возможные решения задачи были внесены в программу);
- частой причиной неправильного распознавания системой введенных формул был случай, когда вместо того, чтобы вводить формулы в лёгком интерфейсе с помощь перестаскивания обозначений студент вводил символы самостоятельно с клавиатуры. Это можно считать весьма полезным замечанием по интуитивности лёгкого интерфейса. Следовало предусмотреть и такой сценарий ввода.
Несмотря на наличие страницы “Типичные ошибки”, студенты часто вместо нескольких формул вводили одну формулу вида
(c,c) = (1-3)^2 + (2-4)^2 = 8
или
(c,c) = (1-3)^2 + (2-4)^2, (c,c) = 8
и только после этого нажимали на кнопку “Проверить шаг”.
Также оказалось, что программа формировала более низкие оценки за решение, чем ожидал тот или иной студент. Причина этого в том, что при внесении решений в базу данных обучающей программы предполагалось, что каждому шагу решения соответствует две формулы: алгебраическое выражение с обозначениями и формула с непосредственными вычислениями. Например:
(a,b) = x_a*x_b+y_a*y_b
и
(a,b) = 1*2+3*4
Студентам не было дано указаний насчет ожидаемой от них формы записи решения, и поэтому они часто опускали формулы, соответствующие алгебраическим выражениям. Между тем, алгоритму измерения прогресса в решении необходимы прежде всего алгебраические выражения: чем более вычислительно свернутой является формула студента, тем больше неопределенность в том, каким способом он решал задачу (грубо говоря, что можно сказать про студента, если он в качестве решения просто введет a = 6?)
Достаточно часто студенты сначала решали задачу на бумаге, а затем вводили ее решение в обучающую программу.
Заключение
Когда-то давно то, что гуманитарии смогут вводить формулы в LaTeX-подобном синтаксисе, не верили не только преподаватели, предоставившие студентов для экспериментов, но и автор данного поста. Мы все были очень удивлены, когда это оказалось не так (спасибо Михаилу Филоненко за настойчивое предложение попробовать именно такой способ ввода решения).
Остается простор для усовершенствования текущей версии разработанной нами обучающей программы. Для того, чтобы обучающая программа умела проверять не 3 задачки по линейной алгебре, а гораздо больше, необходимо дописать еще много программного кода.
Во-первых, необходимо расширять модули перевода формул, введенных с помощью “упрощенного” синтаксиса
- в синтаксис Mathjax (библиотеки, помогающей динамически формировать визуальное представление вводимой студентом формулы);
- в синтаксис, который поймет библиотека символьных вычислений SymPy, с помощью которой осуществляется проверка решений студентов.
Все эти синтаксисы похожи, но имеют свои нюансы.
Во-вторых, одним из ключевых мест подобных систем является модуль проверки решений. В этом направлении разрабатывается алгоритм измерения прогресса в решении студента (описание этого алгоритма и его альтернатив требует отдельного поста).
Кратко по программной реализации
- Серверный язык и фреймворк — Python + Django,
- Логика проверки формул — свои эвристические алгоритмы + SymPy (Python),
- Клиент — JavaScript + jQuery + MathJax,
- Оформление клиента — Twitter Bootstrap.
Благодарности
- Дмитрию Душкину legato_di за неустанное консультирование по различным техническим вопросам и помощь в подготовке этого поста,
- А.Ю. Шварц и А.Н. Кричевцу за помощь в создании контента для обучающей программы и предоставленных студентов,
- Анатолию Панину за разработку альфа-версии программы.
Автор: indrauolles