ЮФУ Таганрогский технологический институт ЮФУ Партнерские программы Дистанционное обучение (MOODLE) Проект цифровая школа
Главная страница Карта сайта Написать письмо
Центр довузовской подготовки ТТИ ЮФУ
ГлавнаяНовостиУслугиЕГЭБиблиотекаРасписаниеО насКонтакты
Поиск

Статьи
Использование Flash и SCORM для создания заданий итогового контроля

Статьи - Дистанционное обучение

Авторы: А.В. Андреев, П.С. Герасименко

Версия для печати 722.53 Kb

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

  • возможность разработки заданий, выходящих за рамки стандартного набора типов тестовых вопросов;
  • возможность выполнения заданий абитуриентом в несколько подходов с сохранением промежуточных результатов;
  • статистика по работе с каждым заданием: выполняется/выполнено, балл, дополнительная информация о работе с заданием;
  • учет итогового балла в журнале оценок;
  • минимум дополнительных разработок для Moodle.

На момент начала разработки зачетных работ по русскому языку (сентябрь 2008 года) самым оптимальным вариантом, учитывающим все приведенные требования, была разработка заданий во Flash и создание на базе разработанных заданий SCORM пакета. На момент написания статьи (февраль 2010 года) существует еще один вариант: использование дополнительного типа вопроса «Flash», разработанного Дмитрием Пупыниным (Новосибирский Государственный Педагогический университет). В своей статье мы остановимся на первом варианте.

Sharable Content Object Reference Model (SCORM) - стандарт, разработанный для систем дистанционного обучения. Данный стандарт содержит требования к организации учебного материала и всей системы дистанционного обучения. SCORM позволяет обеспечить совместимость компонентов и возможность их многократного использования: учебный материал представлен отдельными небольшими блоками, которые могут включаться в разные учебные курсы и использоваться системой дистанционного обучения независимо от того, кем, где и с помощью каких средств были созданы.

Moodle поддерживает стандарт SCORM, в частности, в любой учебный модуль можно включить SCORM-пакет с помощью списка «Добавить элемент курса...».

Пример использования SCORM-пакетов в Центре довузовской подготовки ТТИ ЮФУ можно посмотреть по адресу http://www.cdp.tti.sfedu.ru/distant/mod/scorm/view.php?id=6476.

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

Пример одного из заданий показан на рисунке.

Упражнение по русскому языку

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

Общие вопросы взаимодействия Flash-объектов с сервером по стандарту SCORM

Одной из главных задач при создании Flash-объекта является необходимость обеспечения его взаимодействия с LMS (Learning Management System) в соответствии со стандартом SCORM.

Для начала познакомимся с сутью и задачами организации взаимодействия Flash и сервера по стандарту SCORM.

 

Взаимодействие SCORM и LMS

 

На рисунке схематично показан обмен данными Flash-объекта и LMS. Здесь важно понимать, что изменение и генерация данных происходят только во Flash, LMS в этом никакого участия не принимает. А хранение данных осуществляется только посредством LMS. При этом SCORM описывает правила обмена данными между сервером и Flash-объектом.

Таким образом, необходимо реализовать такую цепочку: запускаем Flash-объект, он генерирует данные (которые необходимы для запоминания текущего состояния самого объекта и выставления оценок абитуриентам) по какому-то событию (для нас актуальны два события: прерывание выполнения и завершение выполнения); все данные, сгенерированные Flash-объектом, передаются на сервер, где хранятся до следующего обращения к Flash-объекту.

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

Из описанного порядка взаимодействия понятно, что нужно реализовать следующие функции:

  • 1) чтение данных с сервера и использование их для построения начального состояния Flash-объекта;
  • 2) подсчёт баллов за задание;
  • 3) отправка данных о текущем положении всех элементов Flash-объекта на сервер, состоянии задания (завершено, выполняется), баллов абитуриента и, возможно, каких-либо дополнительных данных для реализации специальных возможностей.

Организация обмена данными по стандарту SCORM.

Для передачи данных от Flash-объекта серверу будем применять стандарт JSON (JavaScript Object Notation).

Следующий пример показывает JSON-представление объекта, описывающего человека. В объекте есть строковые поля имени и фамилии, объект, описывающий адрес, и массив, содержащий список телефонов.

{

   "firstName": "Иван",

   "lastName": "Иванов",

   "address": {

       "streetAddress": "Московское ш., 101, кв.101",

       "city": "Ленинград",

       "postalCode": 101101

   },

   "phoneNumbers": [

       "812 123-1234",

       "916 123-4567"

   ]

}

Здесь "firstName" - имя переменной, а "Иван" - её значение.

 

В стандарте SCORM в качестве базовой структуры данных используется так называемая CMI Data Model (CMI - Computer Managed Interactions). Фактически, это параметры, определяющие состояние модуля с необходимой точностью. CMI-модель не стоит на месте, поэтому в разных версиях стандартов структура немного разнится, но принципы остаются неизменными. Мы используем SCORM 2004, так как в нем были расширены возможности обмена данными с LMS.

Подробный список всех возможных параметров можно посмотреть в соответствующей документации по SCORM.

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

К макроинформации отнесем следующие параметры:

  1. cmi.session_time - время, потраченное обучаемым в данной учебной сессии;
  2. cmi.completion_status - статус завершенности (может иметь значения unknown, not attempted, incomplete, completed, в некоторых стандартах совмещен с success status, тогда появляются еще значения passed и failed);
  3. cmi.score.raw - основная оценка абитуриента (чаще всего от 0 до 100).
  4. cmi.suspend_data - свободная зона для хранения любой информации от учебного модуля в формате разработчика (например, в формате JSON). СДО должна сохранить информацию "как есть" и вернуть ее учебному модулю ровно в том же виде.

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

  1. objectives - каждый учебный модуль может иметь разное количество целей, прохождение которых может быть оценено отдельно от основой оценки. Фактически objectives - записанный в определенном формате массив информации, характеризующий цель - для каждой цели могут быть сохранены статусы завершенности и успеха, оценка (в том же формате, что и параметр score.raw для всего модуля).
  2. interactions - состояние каждого взаимодействия обучаемого с учебным материалом модуля (вопрос, упражнение и т.п.) может быть записано в этот массив информации.

Использование тех или иных переменных определяется исходя из решаемых дополнительных задач.

Для организации взаимодействия Flash и LMS по стандарту SCORM мы используем свободно распространяемые разработки Philip Hutchison: JavaScript SCORM API Wrapper и SCORM API Wrapper. Скачать их можно по адресу http://pipwerks.com/downloads/.

Ключевые этапы создания заданий итогового контроля

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

Пример упражнения по математике

Первый этап. Техническая часть, которая устанавливает соединение и определяет переменные, необходимые для организации взаимодействия Flash-объекта и сервера. Отметим, что для чтения данных применяется метод scorm.get("переменная").

//====================================================================================================

//////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////         SCORM         ////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

// инициализация взаимодействия со SCORM

import pipwerks.SCORM;

import Flash.external.ExternalInterface;

 

var lessonStatus:String;

var lmsConnected:Boolean;

var success:Boolean;

var scorm:SCORM = new SCORM();

 

lmsConnected = scorm.connect();

 

IsCompleted = scorm.get("cmi.completion_status");

 

Второй этап. Здесь мы организуем проверку переменной "cmi.completion_status", которая хранит информацию о статусе Flash-объекта (выполнено/выполняется). Для этого применяется метод scorm.set("переменная", "значение"). С помощью этого метода мы будем осуществлять запись данных.

//------------------------------------------------------------------

//проверка статуса флешки - выполнено или выполняется - и обработка данных

if(IsCompleted == "completed")

{// если уже завершён

  // разрыв соединения

  scorm.disconnect();

}

else

{//если ещё выполняется

  if(IsCompleted == "incomplete") distribute(); //запускаем функцию расстановки элементов по строке, хранящейся на сервере

  //фиксация обновлений

  scorm.set("cmi.completion_status", "incomplete");

  scorm.save();

}

 

Третий этап. Этот участок кода описывает функцию SetSessionTime(), вычисляющую время, затраченное абитуриентом на выполнение задания. Время выполнения записывается в переменную известным нам методом scorm.set("cmi.session_time", session_time);.

 

//---------------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////////////

///////////////////////// ТАЙМЕР

var intervalId:Number;

var duration:Number = 5000; // частота обновления времени работы с объектом

 

function SetSessionTime():Void

{

  trace("executeCallback intervalId: " + intervalId + " count: ");

 

  if(Math.ceil((getTimer()/1000)%60-1)>9)

  sec = Math.ceil((getTimer()/1000)%60-1);

  else

  sec = "0"+Math.ceil((getTimer()/1000)%60-1);

 

  if(Math.ceil((getTimer()/60000)%60-1)>9)

  min = Math.ceil((getTimer()/60000)%60-1);

  else

  min = "0"+Math.ceil((getTimer()/60000)%60-1);

 

  if(Math.ceil((getTimer()/60000)%60-1)>9)

  min = Math.ceil((getTimer()/60000)%60-1);

  else

  min = "0"+Math.ceil((getTimer()/60000)%60-1);

 

  if(Math.ceil((getTimer()/3600000)-1)>9)

  cha = Math.ceil((getTimer()/3600000)-1);

  else

  cha = "0"+Math.ceil((getTimer()/3600000)-1);

 

  session_time = "PT"+cha+"H"+min+"M"+sec+"S";

  trace( cha+":"+min+":"+sec );

  scorm.set("cmi.session_time", session_time);

}

intervalId = setInterval(this, "SetSessionTime", duration);

 

// таймер для сохранения последнего вида флешки

var intervalId1:Number;

var duration1:Number = 3000; // частота обновления времени работы с объектом

 

Четвёртый этап. Функция SetSuspendData() выполняет запись текущего положения объектов. Сам алгоритм записи в каждом Flash-объекте будет свой, для однотипных заданий (например, конструктор) эти алгоритмы будут похожи. В любом случае, эта функция должна создать строку SuspData установленного формата «{"переменная_1": "значение_1", "переменная_2": "значение_2"}».

         Далее сформированная строка записывается на сервер scorm.set("cmi.suspend_data", SuspData). По этим данным при следующем запуске Flash-объекта произойдёт начальная установка элементов.

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

 

//-------------------------------------------------------------------------------------

//запись данных в переменную SuspData

function SetSuspendData():Void

{

  /*

  формат:

  {

           "p0":["0","1"],

           "p1":[],

           "p2":[]

  }

  */

  // определяем значение переменной SuspData, в которую записываем текущее положение всех объектов флеша

  SuspData = "{";

         //запись текущего местоположения

  SuspData += "}";

 

 

  if(SuspData != SuspDataTemp) // проверка того, что во флеше были сделаны изменения

           {scorm.set("cmi.suspend_data", SuspData);}

 

  SuspDataTemp = SuspData;

}

 

intervalId1 = setInterval(this, "SetSuspendData", duration1);

 

Пятый этап. Подсчёт баллов, который происходит при нажатии кнопки «Проверить». Она финализирует Flash-объект. В частности, делает неактивными объекты перетаскивания и блокирует кнопку «Проверить». Нам осталось сделать подсчёт и вывод балла за задание, передать значение балла на сервер и поменять статус задания на «завершено».

Скрипт данной функции приведён ниже.

function Test_answ()

{

  //делаем d поля неактивными

  for(i=1; i<=_root.NumberOfDFields; i++)

           {eval("_root.d"+i).bt.enabled = 0;}

 

//блокируем кнопку "Проверить"

  _root.test_btn.enabled = 0;

  _root.test_btn._alpha = 80;

 

  _root.Balls_mc._visible = true; //показываем поле вывода баллов

  _root.ShowAnswer_mc._visible = true; //показываем кнопку демонстрации правильного ответа

  //принудительно записываем данные на сервер

  SetSuspendData();

  SetSessionTime();

 

  //testing of correct answer

  _root.NofRight_answ = 0;

  for(i=0; i<_root.NumberOfDFields; i++)

  {

           //проверка правильности положения объекта d с однозначным расположением

           код приведен не полностью

           //проверка оставшихся в нулевом поле элементов

           код приведен не полностью

  }

  //подсвечиваем красным цветом неправильные ответы

 

  //подсчитываем баллы за задание и передаём их на сервер

  Ball = 100*(_root.NofRight_answ)/_root.NumberOfDFields;

  Ball *= 100;

  Ball = Math.ceil(Ball);

  Ball /= 100;

  //передача данных на сервер и в текстовое поле

  if(scorm.get("cmi.completion_status")!="completed")

           {scorm.set("cmi.score.raw", Ball);

            //заносим полученные данные в текстовое поле

            _root.Balls_mc.Balls_txt.text = Ball;

           }

  else

           {//заносим полученные данные в текстовое поля

            _root.Balls_mc.Balls_txt.text = scorm.get("cmi.score.raw");

            }

            

  //статус задания меняем на "выполнено"

  scorm.set("cmi.completion_status", "completed");

}

Строка if(scorm.get("cmi.completion_status")!="completed") проверяет статус задания. Если задание на данный момент уже выполнено, то баллы считываются с сервера, если задание выполнялось, то баллы записываются на сервер. Это сделано для универсальности функции Test_answ(), она вызывается как при нажатии кнопки «Проверить», так и при проверке статуса задания в момент его загрузки.

Вызов функции Test_answ() по нажатии кнопки «Проверить» мы уже написали. Добавим теперь функцию разрыва соединения с сервером scorm.disconnect(). Скрипт для кнопки «Проверить» в окончательном варианте будет выглядеть так:

//-------ОБРАБОТКА НАЖАТИЯ КНОПКИ "ПРОВЕРИТЬ"-------------------------

_root.test_btn.onPress = function ()

{

  //запускаем функцию подсчёта баллов и финализации флешки

  Test_answ();

  // разрыв соединения

  scorm.disconnect();

}

 

Шестой этап. Редактирование манифеста SCORM-пакета.

В папке SCORM-модуля должны находиться следующие файлы:

  • imsmanifest.xml;
  • swfobject.js;
  • SCORM_API_wrapper.js;
  • 01_zadanie.swf;
  • 01_zadanie.html.

Информацию о количестве заданий в данном модуле хранит файл imsmanifest.xml, поэтому в нём необходимо внести соответствующие изменения.

<organizations default="cdp.tti.sfedu.ru">

           <organization identifier="cdp.tti.sfedu.ru">

                     <title>Зачётная работа №1. Математика</title>

                     <item identifier="cdp01" identifierref="id01" isvisible="true">

                              <title>Задание №1</title>

                     </item>

           </organization>

  </organizations>

  <resources>

           <resource identifier="id01" type="webcontent" adlcp:scormType="sco" href="01_zadanie.html">

                     <file href="01_zadanie.html" />

                     <file href="SCORM_API_wrapper.js" />

           </resource>

  </resources>

Информацию о количестве заданий в модуле хранит именно этот участок кода. Нам необходимо удалять (добавлять) в соответствующие места новые конструкции типа:

<item identifier="cdp01" identifierref="id01" isvisible="true">

                              <title>Задание №1</title>

</item>

При этом каждое новое задание увеличивает идентификаторы на единицу.

<resource identifier="id01" type="webcontent" adlcp:scormType="sco" href="01_zadanie.html">

                     <file href="01_zadanie.html" />

                     <file href="SCORM_API_wrapper.js" />

</resource>

На этом изменения в xml-файле заканчиваются.

 

Загрузка SCORM-пакета в Moodle

Теперь мы переходим к завершающей стадии: загрузка SCROM-пакета.

Для этого необходимо создать ZIP-архив со всеми файлами модуля. В архиве должны быть файлы:

  • imsmanifest.xml;
  • swfobject.js;
  • SCORM_API_wrapper.js;
  • 01_zadanie.swf;
  • 01_zadanie.html;
  • nn_zadanie.swf;
  • nn_zadanie.html.

Теперь у нас есть архив со SCORM-модулем, который можно загрузить в Moodle.

Для SCORM-модулей в Moodle есть специальный тип элемента курса SCORM/AICC.

Добавление SCORM-пакета в Moodle

После этого появится диалоговое окно задания параметров нового модуля. Данное окно похоже на аналогичные окна для других типов заданий, нас интересует поле «Файл с пакетом *».

Загрузка SCORM-пакета

Нам необходимо загрузить на сервер созданный SCORM-пакет (архив с именем MathZR1.1.01.zip).

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

На этом процесс создания SCORM-пакета завершается.

 
След. »
 

южный федеральный университет

© 2004-2015 «Центр довузовской подготовки ТТИ ЮФУ»
Администратор сайта Кичигин Д.А.
(webmaster@cdp.tti.sfedu.ru)
Фактический адрес: г. Таганрог, ул. Чехова 24
Почтовый адрес: 347928, Ростовская обл., г. Таганрог, ГСП-17А, пер. Некрасовский, 44.
Телефоны: (8634) 39-38-94, (8634) 37-17-07
e-mail: cdp@cdp.tti.sfedu.ru


Подсказка

Пробный ЕГЭ онлайн - самый точный способ проверить свой уровень подготовки к ЕГЭ. Составленная на основе демо вариантов 2010 года, она является частью программы "Репетиционный сезон ЕГЭ-2010".

 
 
 
   
 
 
 
  
 
 
 

Дистанционное обучение в ЮФУ, репетиция ЕГЭ, сдать ЕГЭ, подготовка к ЕГЭ, демонстрационный вариант ЕГЭ, пробный ЕГЭ, ЕГЭ 2012, пройти ЕГЭ, тестирование ЕГЭ, тесты по ЕГЭ, профильное обучение, предпрофильная подготовка, довузовская подготовка, довузовское образование, центр довузовской подготовки, ЦДП, электронное обучение, обучение MOODLE, результаты ЕГЭ, расписание ЕГЭ, расписание ГИА, математика, русский язык, физика, курсы английского языка, ТТИ ЮФУ, ЮФУ - все это и многое другое вы сможете найти на нашем сайте.

 
 
 
Яндекс цитирования
Rambler's Top100