Научная статья на тему 'MyOpenMath: от генерации задач до полной сетевой поддержки курсов'

MyOpenMath: от генерации задач до полной сетевой поддержки курсов Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
137
36
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
MYOPENMATH / ГЕНЕРАТОР ЗАДАЧ / RANDOM PROBLEM GENERATOR / ОТКРЫТЫЙ ОБРАЗОВАТЕЛЬНЫЙ РЕСУРС / OPEN EDUCATIONAL RESOURCES / ЯЗЫК PHP / PHP

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Бухвалова Варвара Александровна, Бухвалова Вера Вацлавовна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Бухвалова Варвара Александровна, Бухвалова Вера Вацлавовна

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

MyOpenMath: From Random Problem Generation to Complete Online Course Support

How should one promote independent work even for take-home assignments? If one has students who work hard with the course, but ask for more problems with solutions, how could one oblige while remaining prudent with own time? If one has weak students missing some prerequisite knowledge, how would one help them without adversely affecting the learning outcome of the rest of one’s students? One needs an online platform to manage the course, but the institution is lacking resources to provide one, or the available platform is inadequate. If the reader is familiar with at least one of these situations, this article suggests and describes the platform that will solve these problems and more: MyOpenMath.

Текст научной работы на тему «MyOpenMath: от генерации задач до полной сетевой поддержки курсов»

Компьютерные инструменты в образовании, 2015 № 2: 49-62 УДК: 004.434 http://ipo.spb.ru/journal

MyOpenMath: ОТ ГЕНЕРАЦИИ ЗАДАЧ ДО ПОЛНОЙ СЕТЕВОЙ ПОДДЕРЖКИ КУРСОВ

Бухвалова Варвара Александровна, Бухвалова Вера Вацлавовна

Аннотация

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

Ключевые слова: система MyOpenMath, генератор задач, открытый образовательный ресурс, язык PHP.

1. ВВЕДЕНИЕ

В наш век компьютеров и интернета преподаватели вузов по-прежнему довольно часто готовят задания и контрольные работы для математизированных курсов по старинке, используя специальные сборники задач и собственные запасы. В том, что дело обстоит именно так, можно убедиться, открыв каталоги книг издательств, специализирующихся на учебной литературе, например уважаемого издательства «Лань» [12]. Мы увидим там многочисленные сборники задач и индивидуальных заданий по различным дисциплинам и их разделам. При такой «технологии» компьютер в лучшем случае используется для сканирования, набора или печати текста заданий. Однако в последнее время все больше применяются компьютерные технологии поддержки всех составляющих учебных курсов.

Разработка компьютерных технологий подготовки различных типов проверочных работ1 началась с программ-генераторов для них. Многочисленные примеры таких разработок описаны в работах [7], [8], [10]. Только немногие из них нашли широкое применение. Среди последних платный Wolfram Problem Generator [13], который, по мнению его создателей, помогает студентам самостоятельно практиковаться в решении математических задач. О современном состоянии разработок программ-генераторов можно прочесть в обзоре [9].

Одновременно с этим направлением велась работа по разработке комплексного подхода к компьютеризации процесса обучения [1]. Приведем только два примера таких

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

разработок в России — комплекс из учебника и компакт диска с электронным задачником по финансовой математике [2], [3] и учебно-методический комплекс с компакт-диском по линейной алгебре [5].

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

Концепция Открытых Образовательных Ресурсов (Open Educational Resources, OOP) возникла в 2001 г., когда Массачусетский Технологический Институт (MIT) выступил с инициативой создания OpenCourseWare (принято использовать сокращение MIT OCW). Концепция MIT OCW предполагала не только разработку самих курсов, но и создание специальных компьютерных платформ (или систем), на базе которых эти курсы будут разрабатывать преподаватели. С самого начала предполагалось, что все материалы по курсам будут предоставляться интернет-пользователям бесплатно2. В 2002 г. MIT запустил сервер MIT OCW — первую общедоступную платформу для создания ООР. За прошедший период движение по созданию, развитию и продвижению ООР получило широкую поддержку во многих университетах. Например, сайт MIT OCW (http://ocw.mit.edu/) каждый месяц в среднем посещает миллион посетителей, среди которых: 43% — самообучающиеся пользователи, 42% — студенты, 9% — преподаватели, 6% — остальные.

Как было отмечено выше, создание и функционирование ООР предполагает наличие специального программного обеспечения (систем), которое обычно может быть использовано также для создания и функционирования элетронного учебного ресурса с различным уровнем открытости. Такие системы принято называть Системы управления обучением (Learning Management System, LMS).

Среди LMS имеются как дорогие комплексные решения, типа BlackBoard (используется, например, в СПбГУ, https://bb.spbu.ru/), так и open-source продукты, системы типа Moodle (https://moodle.org/). На базе последней системы созданы, например, Центр дистанционной поддержки обучения РГПУ им. А. И. Герцена (http://moodle.herzen.spb.ru/) и аналогичный ресурс СПбГУЭФ (http://moodle.finec.ru/).

Обычно бесплатные системы имеют непростой процесс установки, настройки и поддержания, поэтому появились фирмы, которые предлагают платную установку и настройку бесплатных LMS. Однако существует другой способ решения этой проблемы. Чтобы упростить процесс установки и внедрения своих LMS в учебных заведениях, ряд разработчиков решили держать всю серверную часть у себя. Именно по такому пути пошла компания Google при создании системы OpenClass (http://www.joinopenclass.com). В создании системы OpenClass, кроме Google, участвовала британская компания Pearson Higher Education. Дополнительным преимуществом OpenClass является её тесная интеграция с существующими продуктами Google. Создатели этой системы отмечают особую роль социальной составляющей обмена информацией и отнесли ее к новому типу LMS — Social Learning Management System (социальная система управления знаниями).

К свободно распространяемым LMS относится и система IMathAS (Internet Mathematics Assesment System): http://imathas.com/. Первая версия этой системы была разработана в 2006 г. профессором Дэвидом Липпманом (David Lippman) из Pierce College (Lakewood, Washington). Отличие этой системы от упомянутых выше в поддержке курсов, которые включают выполнение упражнений и заданий, связанных с разнообразными математическими вычислениями. В связи с тем, что и система IMathAS имеет те же негатив-

2 Определение ЮНЕСКО гласит: «Открытые образовательные ресурсы — учебные и научные ресурсы, существующие в открытом доступе или выпущенные под лицензией, которая разрешает их бесплатное некоммерческое использование и модификацию третьими лицами».

ные свойства (непростой процесс установки, настройки и поддержки), в 2011 г. пользователям был предложен вариант этой системы, аналогичный системе OpenClass, — MyOpenMath, (MOM) (https://www.myopenmath.com/). Это означает, что по сути был создан облачный сервис. Основным разработчиком MyOpenMath был всё тот же Дэвид Липпман при поддержке компании Lumen Learning.

Заметим, что преподаватели, уже использующие такие коммерческие платформы как itslearning и Blackboard, могут интегрировать элементы курса, созданного в MyOpenMath, в сайт курса на этих коммерческих платформах. При этом студенты даже не заметят, что они используют ресурс MyOpenMath. Одним из авторов этой статьи был реализован в рамках своего курса доступ из itslearning к сгенерированным в MyOpenMath контрольным и практическим задачам. Системы itslearning и Blackboard позволяют проводить тесты в сети, но не включают возможность случайной генерации заданий.

О возможностях и технологии использования MyOpenMath и пойдет речь в этой статье. Статья имеет следующую структуру. Раздел 2 посвящён краткому обзору структуры системы MyOpenMath и описанию процесса создания нового учебного курса. Перечисляются основные структурные единицы курса и их назначение. В разделе 3 описаны базовые возможности при создании проверочных работ. Основное внимание уделено технике программирования ответов на вопросы на языке PHP, которая демонстрируется на примерах. В заключении (раздел 4) кратко рассказано о не обсуждённых в статье возможностях системы MyOpenMath.

2. СТРУКТУРА И ВОЗМОЖНОСТИ MyOpenMath

Как можно догадаться из названия, система (или ресурс) MyOpenMath предназначена прежде всего для математизированных курсов. Именно в области подготовки и проверки заданий, предполагающих выполнение сколь угодно сложных и объёмных вычислений, MyOpenMath не знает равных. Использование этого ресурса организовано как облачный сервис и возможно без дополнительных организационных усилий. Преподавателю, чтобы начать работать в MyOpenMath, достаточно простой (и, разумеется, бесплатной) регистрации. Студент также проходит процедуру регистрации, но получает доступ только к тем материалом, которые откроет для него преподаватель. Отметим также, что и далее пользователям не будет предлагаться купить более продвинутую версию сервиса.

Не можем не отметить ещё два положительных качества MyOpenMath. Во-первых, на сайте имеется богатый набор справочных материалов, в которых обстоятельно рассказано о возможностях системы и способах доступа к ним. Во-вторых, на сайте существует простой доступ к форуму пользователей, где можно получить помощь даже от одного из создателей MyOpenMath — Дэвида Липпмана. Это особенно важно, когда вы не находите ответа на свой вопрос в справочных материалах. Например, при подготовке материалов статьи, мы столкнулись с проблемой использования кириллицы в текстах вопросов и написали об этом Дэвиду. Он сразу откликнулся и через несколько дней (!) внёс необходимые изменения. Теперь такой проблемы не существует и все материалы курса можно готовить на русском языке.

2.1. Создание нового курса

Создание нового курса зарегистрированным пользователем-преподавателем (Instructor) начинается с регистрации, для выполнения которой требуется выполнить

следующие действия:

1. Открыть страницу Home Page, которая будет содержать информацию о всех курсах, связанных с вами.

2. Пойти по ссылке Admin Page.

3. На странице Admin выбрать опцию Add New Course и заполнить открывшуюся форму. После этого ваш курс получит свой ID (генерируется системой) и свой enrollment key (указанный вами пароль). Именно эту информацию должен знать студент, которому вы откроете допуск к вашему курсу.

Выполнив эти действия, вы получите подтверждение, подобное тому, что приведено на рис. 1.

Рис. 1. Подтверждение создания нового курса

В любой момент в дальнейшем будут существовать три формы представления курса: для преподавателя (Instructor), для студента (Student) и для общего обзора и редактирования (Quick Rearrange). Только автор (авторы) курса имеют доступ ко всем трем формам. Обычная работа над созданием (наполнением) курса ведётся с формой для преподавателя. Общий обзор полезен для оценивания и редактирования страницы курса в целом. Он даёт возможность переставить структурные единицы курса и(или) изменить их заголовки. Следует иметь в виду, что сделанные изменения будут сохранены только после нажатия на Save Changes.

2.2. Структурные единицы курса

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

1. Block — группа связанных элементов курса;

2. Inline Text Item — текст, который отображается на странице курса;

3. Linked Text Item — аннотация, которая отображается на странице курса. Текст может быть задан ссылкой на файл или интернет адресом.

4. Forum Item — форум курса;

5. Assessment — проверочная работа;

6. Calendar — календарь курса, если преподаватель хочет разместить его на странице курса.

Для каждого из этих элементов можно задать заголовок, временной период доступа к нему для студентов и свои специальные параметры. Например, параметры блока — формы доступа к нему в зависимости от календарного времени и используемые для изображения цвета. Больше всего специальных параметров имеют проверочные работы (Assessments). Описание этих параметров занимает 5 из 17 страниц в help-файле. Многие из них касаются методов оценивания работы. Указывается также, имеется ли доступ у студентов к правильным ответам на вопросы, и если имеется, то когда.

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

3. ПРОВЕРОЧНЫЕ РАБОТЫ

Любой учебный курс предполагает проведение разного типа проверочных работ. Это могут быть тесты, домашние задания, различного рода эссе, промежуточный и итоговый экзамен и т. д. Думаем, что у многих преподавателей на создание проверочных работ уходит времени не меньше, чем на создание остальной части курса. Поэтому то, что создатели системы MyOpenMath разработали такой продвинутый механизм создания проверочных работ, является их большим достижением. Основной структурной единицей проверочной работы является вопрос (Question).

Оставшаяся часть статьи посвящена описанию типов вопросов, их структуры и процесса создания.

3.1. Структура вопроса

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

Прежде всего отметим, что при записи вопроса, для получения ответа на который выполняются некоторые вычисления, используется подмножество языка PHP. Это довольно типичный язык скриптов, который в своей вычислительной части мало чем отличается, например, от языка AWK, о котором мы писали ранее [4]. Основное назначение языка PHP, как следует из его названия (Personal Home Page), — разработка веб-приложений. Для написания вопросов вполне достаточно справочной информации системы MyOpenMath. Однако для тех, кто захочет поближе ознакомиться с этим языком, мы включили в список литературы обстоятельный учебник по нему [6], [11].

Вопрос состоит из разделов, порядок следования которых совпадает с использованным ниже:

1. Description: название вопроса, которое не видно студенту.

2. Use Rights: тип прав на вопрос. Возможные значения: Private — только автор может использовать вопрос; Use, no modification — все могут использовать этот вопрос, но только автор может его изменять; Use, allow modification — все могут использовать и модифицировать вопрос. Однако автор вопроса всегда имеет полное право на него.

3. Libraries: собственные библиотеки, которые должны быть подключены для выполнения кода вопроса.

4. Question type: тип вопроса.

5. Common control: общие определения, необходимые при отображении и оценивании вопроса.

6. Question control: определения, необходимые при отображении вопроса (по умолчанию закрыты).

7. Question text: отображаемый текст вопроса. При записи текста используется язык HTML, в который могут быть включены переменные, определённые в Common control и Question control.

8. Answer: код определения ответа на вопрос (по умолчанию закрыт).

В зависимости от содержания вопроса и предпочтений его создателя, некоторые из этих разделов могут остаться пустыми. В частности, весь текст решения и его оценивания может быть помещён в раздел Common control. В этом случае разделы Question control и Answer будут пустыми. Убрать эти разделы с экрана можно, нажав кнопку 2-box entry (активировано по умолчанию), которая расположена справа от Switch to3.

Дополнительные требования, которые должны учитываться при создании нового вопроса, сильно зависят от типа вопроса. Это касается, прежде всего, задания значений встроенных переменных, связанных с каждым типом вопроса. Ссылка Writing Questions Help над разделом Common control открывает файл, в котором содержится информация об этих переменных.

3.2. Типы вопросов

Тип вопроса определяется типом ответа на вопрос. Полный список возможных типов вопросов достаточно велик и его можно открыть над разделом Common control при задании типа вопроса (Question type). В этом же разделе можно (или нужно) задать значение ряда встроенных переменных ответственных за то, как будут сравниваться ответ студента с ответом преподавателя. Разумеется, эти переменные свои для каждого типа вопроса. Ниже на примерах рассмотрены только три базовых типа вопроса: Number, String, Numerical Matrix.

Числовой вопрос

В простейшем случае такому вопросу соответствует тип Number. От студента в качестве ответа на вопрос или пункт вопроса требуется ввести число (целое, вещественное или специальное обозначение). В качестве специальных обозначений могут использоваться DNE (ответ не существует), оо (бесконечность), -оо (отрицательная бесконечность). Ответ студента сравнивается с ответом на вопрос, приведенным преподавателем в разделе Common control, например4, $answer = 10. Возможны числовые вопросы, в которых ответ неоднозначен. Например, при нескольких правильных вариантах ответа используется такая форма записи ответа (строка): $answer = "10 or 9 or 8". Другие варианты неоднозначных ответов и правила их использования приведены в справочной системе

3Форма 4-box entry является устаревшей и не будет использована в статье.

4Заметим, что название каждой переменной начинается со знака "$", в соответствии в правилами языка PHP

MyOpenMath. Заметим только, что в ряде случаев потребуется задание ещё одной встроенной переменной $answerformat.

В разделе Common control можно задать относительную или абсолютную точность ответа (но только одну из них). Значение относительной точности должно быть присвоено встроенной переменной $reltolerance. По умолчанию $reltolerance = .001 (0.1%). Значение абсолютной точности должно быть присвоено встроенной переменной $abstolerance.

Другой способ задания абсолютной точности — использование переменной $reqdecimals, которая задаёт точность округления ответа — требуемое количество цифр после десятичной точки в ответе студента5. При этом в окне ответа появится подсказка, с каким количеством цифр требуется ввести дробную часть ответа.

Рассмотрим пример. Пусть от студента требуется вычислить площадь треугольника, у которого заданы длины сторон. Так как речь идет о проверке знания формулы Геро-на, в разделе Description напишем Формула Герона. В разделе Use Rights оставим значение по умолчанию (Private). Также поступим в разделе Libraries — оставим Unassigned. Мы будем использовать эти два значения во всех примерах. Ответ на вопрос является числом, поэтому в разделе Question type выберем Number.

В раздел Common control помещаем запись алгоритма генерации корректных данных и получения ответа (в рассматриваемом примере — площади треугольника):

$b = rand(3,30) $a = rand($b,30) $c = rand($a,$a+$b-1) $p = ($a+$b+$c)/2 $reqdecimals = 2

$answer = (($p-$a)*($p-$b)*($p-$c)*$p)A(1/2)

Сделаем необходимые пояснения к приведённому коду. Параметрам задачи (переменные $b, $a, $c — длины сторон треугольника) присвоены случайные значения. Используется встроенная функция rand(min,max), значением которой является случайное целое число из интервала [min, max]. Так как не любая тройка чисел может быть длинами сторон треугольника — необходимо выполнение неравенств треугольника, мы задаем такие аргументы функции, при которых эти неравенства будут выполнены. Переменной $p присвоено значение полупериметра треугольника. Встроенной переменной $answer присвоено значение площади треугольника, вычисленной по формуле Герона. Задано значение встроенной переменной $reqdecimals = 2, поэтому ответ студента и значение переменной $answer будут сравниваться с точностью до двух знаков после десятичной точки.

Хотя длины сторон генерируются датчиком случайных чисел, в коде выбраны такие тройки значений, для которых существует соответствующий треугольник. В ряде случаев выбрать заведомо подходящую комбинацию случайных чисел может быть сложно или невозможно. Покажем на этом простом примере, как можно действовать в подобных случаях. Предположим, что нам неизвестно неравенство треугольника и мы хотим сгенерировать случайную тройку чисел (a, b, c), для которой (p - a) * (p - b) * (p - c) > 0.

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

$reqdecimals = 2

{$b = rand(3,30); $a = rand(3,30); $c = rand(3,30); $p = ($a+$b+$c)/2

} where (($p-$a)*($p-$b)*($p-$c)>0)

$answer = (($p-$a)*($p-$b)*($p-$c)*$p)A(1/2)

Длины сторон генерируются из одинаковых множеств и могут не соответствовать требованиям неравенства треугольника. Значение под корнем тогда отрицательно. Тем не менее код, приведённый выше, успешно генерирует три стороны треугольника и вычисляет его площадь. Конструкция { } where ( ) повторяет команды { }, пока условие ( ) не будет выполнено6. В приведённом примере условие требует повторения генерации, пока значение под корнем не будет положительно. Обратите внимание, что where должно следовать в той же строке, что и }. Несколько команд может быть в одной строке, если они разделены ;. Заметим, что к недостаткам системы MyOpenMath следует отнести сложность процесса отладки. Простые ошибки находятся нелегко, так как отсутствуют информативные сообщения об источнике проблемы.

Осталось заполнить раздел Question text, записав в него текст вопроса и указание о необходимой точности вычислений:

Вычислите площадь треугольника, длины сторон которого равны $a, $b, $c.

Указание. Ответ должен быть указан с точностью двух знаков после десятичной точки.

В тексте вопроса при ссылке на параметры используются соответствующие переменные из раздела Common control.

В тексте вопроса элементы форматирования могут быть внесены с помощью тэгов HTML, но мы рекомендуем переход по ссылке Toggle Editor в удобный редактор. При повторном нажатии на эту ссылку происходит выход из редактора и вставка команд форматирования в текст вопроса в виде HTML-тэгов. На рис. 2 приведен общий вид страницы с вопросом «Формула Герона».

Для отладки вопроса следует нажать Save and Test Question в одном из двух разделов вопроса. Появится новое окно с текстом вопроса и местом для ввода ответа. По умолчанию место для ввода ответа находится после всего текста вопроса. С помощью переменной $answerbox можно указать это место. Вопрос может также подразумевать более одного ответа: например площадь и периметр треугольника. Тип вопроса тогда — Multipart, а тип ответов — численный вектор: $anstype = array("number","number"). Место для первого ивторого вопросов задаются $answerbox[0] и $answerbox[1] соответственно. В тексте вопроса значки переменных будут заменены на их значения.

Вопрос с ответом строка

В простейшем случае такому вопросу соответствует тип String. В окне ответа появится подсказка, что требуется ввести текст. Строка-ответ студента сравнивается с строкой-ответом, указанной преподавателем в разделе Common control, например $answer = "Debt". Возможны вопросы, в которых ответ неоднозначен. Например, при нескольких правильных вариантах ответа используется такая форма записи ответа:

6После 200 итераций выполнение вычислений прерывается. На экран выводятся значения последней итерации и предупреждение, что условие не было выполнено после 200 итераций.

Рис. 2. Общий вид страницы с вопросом «Формула Герона»

$answer = "Debt or Dividends". Другие варианты неоднозначных ответов и правила их использования приведены в справочной системе MyOpenMath.

За то, как будут сравниваться ответы-строки, отвечает переменная $strflags. В этой переменной-строке задаются значения флагов, которые определяют режим сравнения. Например, если $strflags = "remove_whitespace=1, ignore_case=1", то перед сравнением из строки-ответа студента будут удалены все пробелы и не будут различаться заглавные и строчные буквы. Впрочем, ignore_case=1 по умолчанию, так что нужно написать ignore_case=0, чтобы заглавные и строчные буквы различались.

Рассмотрим пример, в котором от студента требуется вычислить изменение числа в процентах от исходного значения. В разделе Description напишем Вычисление процента от числа. Ответ на вопрос является строкой (требуется приписать знак % после числа), поэтому в разделе Question type выберем String.

В разделе Common control запишем алгоритм генерации случайных данных и получения ответа:

$a = rand(300000, 600000) $b = round($a*rrand(1.1,2,0.1),0) $s = round(($b/$a - 1)*100,0) $answer = "$s%"

В разделе Question text поместим текст вопроса и указание о форме представления ответа:

^первоначальная цена автомобиля была $a руб. Новая цена автомобиля $b руб.

На сколько процентов новая цена больше первоначальной цены?</p> <p><em>Указание.</em> Ответ должен быть указан с точностью до целых процентов (со знаком %).</p>

^ MyOpenMath Assessment - Internet Explorer - п Ш/Ш

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

^ https://www. гпуоpenmath.com/course/testqu estiоп. ph p?ci d =42776iqsetid=457S1 A

Score on last answer: 1/1

Первоначальная цена автомобиля была 583915 руб. Новая цена автомобиля 642307 руб. На сколько процентов новая цена больше первоначальной цены?

Указание. Ответ должен быть указан с точностью до целых процентов (со знаком %).

|10%

( Show Answer j 10% ( Show Detailed Solution/l

( Submit ) ( Submit and Regen ] } White Background ) ( Show HTML ] Question id: 45781. Message owner G1 to report problems Description: Вычисление процента от числа Author: BukhvaLova,Vera Last Modified: 02/23/15 7:02 pm

Mark as broken if there appears to be an error with the question. License: IMathAS Community License Question is in these libraries:

Рис. 3. Тестирование вопроса «Вычисление процента от числа»

На рис. 3 приведена вкладка, которая появилась после нажатия на Save and Test Question для этого вопроса. В тексте вопроса значки переменных заменены на сгенерированные значения ($a = 583915, $b = 642307)7 Так как введен правильный ответ (10%), рамка окна ответа и введённая строка зелёные, и рядом с рамкой стоит зелёная галочка (/). В случае неправильного ответа цвет рамки окна ответа и введённой строки будет красным, а рядом с рамкой появится красный крестик (х).

7Большие числа может быть сложно воспринимать, тогда в Common control можно добавить $ap = prettyint($a) и заменить в тексте вопроса $a на $ap. «Первоначальная цена автомобиля» примет вид: 583,915.

При тестировании вопроса удобно знать значение правильного ответа — оно появится при нажатии на Show Answer. Опция Submit and Regen позволяет провести тестирование с несколькими наборами данных.

Вопрос с ответом матрица

В простейшем случае такому вопросу соответствует тип Numerical Matrix. Студент должен ввести матрицу-ответ, которая сравнивается с значением переменной $answer. Например, $answer = "[(1,2,3),(4,5,6)]" задаёт в качестве ответа матрицу с двумя строками и тремя столбцами.

Для задания точности вычисления элементов матрицы используются те же переменные, что и в числовом вопросе ($reltolerance, $abstolerance, $reqdecimals).

Рассмотрим пример, в котором студенту предлагается решить систему линейных уравнений Ax = b. В разделе Description напишем Решение системы линейных уравнений. Ответ на вопрос — вектор значений неизвестных (матрица-столбец), поэтому в разделе Question type выберем Numerical Matrix.

В разделе Common control запишем алгоритм генерации случайных данных и получения ответа:

loadlibrary("matrix") $n = rand(3,5)

$aa1 = matrixrandinvertible($n) $a = $aa1[0]

$x = matrix(rands(-5,5,$n),$n,1) $b = matrixprod($a,$x) $at= matrixdisplaytable($a) $bt= matrixdisplaytable($b) $ansprompt = "x = " $anstypes = "matrix"

$answer = matrixformat(matrixtranspose($x))

Сделаем необходимые пояснения к приведённому коду. В первой строке загружается библиотека matrix, функции из которой используются в этом примере. Размерность задачи $n — случайное число из интервала [3,5]. Для генерирования случайной и неособенной матрицы системы $a используется функция matrixrandinvertible($n). Эта функция генерирует массив $aa1, состоящий из двух матриц (прямой и обратной к ней). В качестве матрицы системы используется первая из этих матриц (элементы массивов в языке PHP всегда нумеруются с нуля). Компонентам решения системы $x присвоены случайные значения из интервала [-5,5]. Этот вектор и является ответом на вопрос. Для вычисления вектора правых частей $b используется функция matrixprod($a,$x). Функция matrixdisplaytable() создает табличный HTML-формат представления матрицы. Встроенной переменной $answer присвоено значение транспонированного вектора $x, являющегося решением системы.

В разделе Question text поместим текст вопроса и указание о форме представления ответа:

<р>Найдите решение x системы уравнений Ax = b, где</р> A = $at, b = $bt. <р><ет>Указание.</em>

Введите найденное решение системы, разделяя его компоненты запятыми.</p>

г

MyOpenMath Assessment - Internet Explorer

^ https://www. myü p en m ath. с о m/c о u rse/teîtq u esti о n. p h p ?c i d=4277&q seti d=47000

Найдите решение x системы уравнений Ax = b. где

A =

Указание. Введите найденное решение системы, разделяя его компоненты запятыми.

-3 -9 -3 " "-33 "

4 9 4 . b = 29

8 -10 -9 -82

Previe

Show Answer

[ Submit I [ Submit and Regen ) [ White Background j

[ Show HTML I

Question id: 47000. Message owner t3 to report problems Description: Решение системы линейных уравнений Author: Bukhvalova^Vera Last Modified: 03/10/15 3:16 am

Mark as broken if there appears to be an error with the question. License: IMathAS Community License Question is in these libraries:

Рис. 4. Тестирование вопроса «Решение системы линейных уравнений»

На рис. 4 приведена вкладка, которая появилась после нажатия на Save and Test Question для этого вопроса. В тексте вопроса значки переменных заменены на случайные сгенерированные значения.

3.3. Печать проверочной работы

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

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

Course I Messages | Forums Roster Calendar Gradebook | Home > Работа в системе MyOpenMath > Add/Remove Questions

Add/Remove Questions ?

[Assessment Settings

Questions in Assessment - Примеры для статьи

Check: AH None With Selected: [ Remove ] (~Group J [ Charge Setting; j

| Ordtt 0«£|*1рЦдп ID Preview Тур* Points Settings Source Template Rem&ye|

□ 11 Вычисление процента oi числа 457S1 [ Preview"] string 1 Ching* Edit Template Remove

□ P v формула Герона 4&043 (Preview ] number 3 Change Edit Template Remove

□ |3 v| Решениеcuck^bi линейны* умвчений 47000 f Pre/lew) mitrin 5 Chsnjt Edit Template Remove Assessment points lotaL ■*

( Done ] [ Assessment Settings j [ Categorize Questions ] [ Create Print version ] [ Define End Messages | | Preview"]

Рис. 5. Фрагмент страницы с проверочной работой

4. ЗАКЛЮЧЕНИЕ

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

За рамками нашей статьи осталась также технология программирования на языке PHP. С ней можно ознакомиться в учебниках по этому языку. Видимо, одним лучших среди них является учебник Мэтта Зандстраv [6]. На английском языке имеется уже 4-ое издание этого учебника [11], и издательство «Вильямс» планирует выпустить его перевод в 2015 г.

Благодарности

Авторы выражают благодарность профессору Дэвиду Липпману, который оперативно, по просьбе авторов этой статьи, устранил проблемы, связанные с использованием кириллицы в МуОрепМа^. Авторы выражают также благодарность профессору И. В. Романовскому, который помогал в процессе работы над этой статьей своими советами и замечаниями.

Список литературы

1. Башмаков А. И., Башмаков И. А. Разработка компьютерных учебников и обучающих систем. М.: Издательский дом «Филинъ», 2003.

2. Бухвалов А. В., Бухвалова В. В., Идельсон А. В. Финансовые вычисления для профессионалов. СПб.: БХВ-Петербург, 2001.

3. Бухвалов А. В., Бухвалова В. В., Воронков В. О. Современный университетский учебник. Создание электронного задачника // Материалы 2-ой всероссийской конференции «Электронные учебники и электронные библиотеки в открытом образовании (29 ноября 2001)», М.:МЭСИ, 2001.

4. Бухвалова В. А., Бухвалова В. В. Применение языка AWK для оперативной обработки экономической информации // Компьютерные инструменты в образовании, №3, 2013. С. 3—13.

5. Воеводин В. В., Воеводин Вл. В. Энциклопедия линейной алгебры. Электронная система ЛИНЕАЛ. СПб.: БХВ-Петербург, 2006.

6. Зандстра М. PHP. Объекты, шаблоны и методики программирования. М.: Вильямс, 2012.

7. Посов И. А. Автоматическая генерация задач // Компьютерные инструменты в образовании, № 1, 2007. С. 54—62.

8. Посов И. А. Программирование генераторов задач // Компьютерные инструменты в образовании, №3, 2010. С. 19-31.

9. Посов И. А. Обзор генераторов и методов генерации учебных заданий // Образовательные технологии и общество, № 4, Т. 17, 2014. С. 593-609.

10. Степанов А. В. Система компьютерной генерации заданий по математике // Компьютерные инструменты в образовании, № 3/4, 2000. С. 28-31.

11. Matt Zandstra PHP Objects, Patterns, and Practice. — 4th Edition, 2013.

12. Издательство «Лань»: http://lanbook.com/ (дата обращения 20.04.2015).

13. Wolfram Problem Generator: http://wolframalpha.com/pro/problem-generator(дата обращения 20.04.2015).

MyOpenMath: From Random Problem Generation to Complete Online Course Support

Bukhvalova V. A., Bukhvalova V. V. Abstract

How should one promote independent work even for take-home assignments? If one has students who work hard with the course, but ask for more problems with solutions, how could one oblige while remaining prudentwith own time? If one has weakstudents missing some prerequisite knowledge, how would one help them without adversely affecting the learning outcome of the rest of one's students? One needs an online platform to manage the course, but the institution is lacking resources to provide one, or the available platform is inadequate. If the reader is familiar with at least one of these situations, this article suggests and describes the platform that will solve these problems and more: MyOpenMath.

Keywords: MyOpenMath, random problem generator, open educational resources, PHP.

Бухвалова Варвара Александровна, PhD, Associate Professor, Department of Finance, BI Norwegian Business School, barbara.bukhvalova@bi.no

Бухвалова Вера Вацлавовна, кандидат физико-математических наук, доцент кафедры исследования операций математико-механического факультета СПбГУ,

vera_cut@mail.ru

© Наши авторы, 2015. Our authors, 2015.

i Надоели баннеры? Вы всегда можете отключить рекламу.