УДК 004.023+004.08
В. В. Лаптев, В. В. Толасова
МОДЕЛИ ОЦЕНИВАНИЯ В ОБУЧАЮЩЕЙ СИСТЕМЕ ПО ПРОГРАММИРОВАНИЮ
Введение
В самом общем виде процесс обучения представляет собой совместную деятельность обучающего и обучаемого. Более внимательный взгляд показывает, что взаимодействие преподавателя и студента включает в себя ряд принципиально различных видов деятельности:
— информационную (студенту предоставляется учебный материал в некоторой форме: лекции, тексты, рисунки, графики и т. п.);
— тренирующую (студент учится применять знания на практике, решая задачи);
— контролирующую (знания студента проверяются и оцениваются);
— административную (ведется учет показателей процесса обучения каждого студента).
Очевидно, что при изучении любой предметной области для обучаемого основными
являются первые два вида деятельности. Контроль и администрирование дают возможность управлять процессом обучения и обеспечивают обратную связь. Эти два вида деятельности практически всегда осуществляет преподаватель.
Специфика обучения технологиям разработки программного обеспечения (ПО) состоит в том, что основной деятельностью студента является тренирующая, направленная на выработку необходимых умений и навыков. Например, при обучении программированию студенты должны писать довольно большое количество программ, выполняя лабораторные и курсовые работы. При изучении технологий проектирования значительную часть курса также составляют лабораторные работы, во время которых студенты приобретают практический опыт построения моделей с использованием языка UML. Таким образом, при обучении технологиям разработки ПО фактически превалирует деятельностный подход [1]. При этом значительно возрастает роль контроля, функцией которого является оценивание уровня знаний и умений обучаемого. На основе этой оценки осуществляется адаптивное управление ходом учебного процесса.
Однако при обучении технологиям разработки ПО оценивание является весьма сложной задачей. Для определенности остановимся на проблеме оценивания при обучении программированию. Технологии тестирования [2], широко применяемые для оценивания уровня знаний при обучении гуманитарным и многим естественнонаучным дисциплинам, совершенно не годятся при обучении программированию, т. к. не позволяют оценить умение студента разрабатывать программы. Поэтому оценивание программы представляет собой неформальный процесс, и выставляемая оценка является в значительной мере субъективной. К числу субъективных факторов, влияющих на выставляемый балл, можно отнести предпочтение преподавателем определенного стиля программирования, форму представления результатов, удобство интерфейса программы. Кроме того, преподаватель при выставлении итоговой оценки часто ориентируется на предполагаемый уровень знаний студента. Не исключается влияние на оценку и межличностных отношений преподавателя и студента. Таким образом, при традиционном обучении об объективности оценок за разработанные программы говорить не приходится. Именно поэтому объективное оценивание работы студента является актуальной задачей, которая должна быть решена в автоматизированной обучающей системе.
Знания в обучающей системе
Решение этой задачи требует определения таких взаимосвязанных моделей знаний [3], как модель предметной области, модель знаний обучаемого, модели заданий, модель обучения, модель объяснения и т. п.
Модель предметной области. Эта модель представляет собой три множества: множество единиц знаний (понятий, концептов) V = (VI, v2, ..., у„), множество заданий Е = (еь е2, ..., ет} и множество информационных единиц Н = (Н1, Н2, ..., Нк}. На множествах V и Е определяется несколько отношений.
1. Бинарное отношение РV на множестве V: (V,, vj)еPy, 1 < /, - < п, , ф- тогда и только тогда, когда единица знаний V, должна быть изучена до изучения V. Отношение Р^ представляет собой ориентированный ациклический граф и определяет последовательность изучения единиц знаний.
2. Бинарное отношение на множестве V: (V,, v])е Жу, 1 < /,- < п, , ф- тогда и только тогда, когда единица знаний V, является составной единицей знания и в которую входит у-. Отношение Жрг представляет собой лес и определяет семантические связи между единицами знаний.
3. Бинарное отношение VE на множестве ^Е: пара (у,, е-)е VE, 1 < , < п, 1 <- < т тогда и только тогда, когда для усвоения единицы знаний V, требуется выполнить задание е-.
4. Обратное отношение Е1^ на множестве ^Е: пара (е-, ^е Ev, 1 < , < п, 1 <- < т, если при выполнении задания е- происходит усвоение понятия V,-.
5. Очевидно, что с каждой единицей знаний V, связано некоторое подмножество заданий Е^), мощность которого обозначим как т, = Е^)!. На этом подмножестве вводится отношение последовательности выполнения заданий Рад, аналогичное отношению РV на V: пара (ег1, е,2) е PE(V), 1 < /'1, ,2 < т,, ф ,2 тогда и только тогда, когда задание е,2 должно быть выполнено после задания ей.
Множество информационных единиц Н в общем случае не совпадает с множеством V: одна информационная единица может содержать сведения о нескольких единицах знаний, и одна единица знаний может быть упомянута в нескольких информационных единицах. Поэтому на множестве УuH задаются два бинарных отношения: VH и Ну.
1) пара (И-, V,) е Н, 1 < , < п, 1 < - < к тогда и только тогда, когда содержание информационного элемента И- относится к единице знаний V,; это отношение устанавливает, в каких информационных элементах упоминается о данной единице знаний;
2) пара (V,, И-) е VH, 1 < , < п, 1 <- < к тогда и только тогда, когда описание или объяснение единицы знаний V, содержится в данной информационной единице И-.
Отношение VH фактически определяет информационный индекс 1(И) каждого информационного элемента И-. Формально информационный индекс можно определить как отображение
I : Н ^ Р(V) \ 0,
где P(V) является множеством всех подмножеств множества V. Таким образом, каждой информационной единице И- ставится в соответствие одно из подмножеств множества V.
Множество V определяет глоссарий предметной области, в котором каждая единица знаний определяется ключевыми словами или фразами. Пара отношений VH и НV фактически определяет гиперссылки между информационными элементами.
Все эти отношения используются адаптирующими алгоритмами для построения адаптивной траектории изучения предметной области.
Модель задания и модель знаний обучаемого. Заданиями в обучающей системе являются задания на программирование. Обучающая система должна вычислять две оценки: разовую оценку за выполнение конкретного задания и текущую оценку уровня знаний обучаемого. Вторая оценка определяет уровень обученности, который тоже используется адаптирующими алгоритмами для корректировки траектории изучения предметной области. Нужно отметить, что оценка уровня обученности зависит только от выполнения практических заданий - изучение теоретического материала не влияет на уровень обученности. При каждом выполнении конкретного задания система корректирует модель знаний обучаемого, на основе которой и определяется уровень обученности.
Рассмотрим вычисление разовой оценки за выполнение конкретного задания. Для вычисления используется модель задания, которую можно представить как кортеж:
Ме = < Т, Мт, М5, Ь, V >.
Элементами модели задания являются:
1) T - текст задания;
2) Мт - модель тестирования программы;
3) MS - эталонная статическая модель программы;
4) Ь е [0, 1] - уровень сложности задания; используется адаптирующими алгоритмами для подбора подходящего задания.
5) V! е (0, 1] - вес (важность) задания для усвоения единицы знаний, к которой «привязано» данное задание.
Разовая оценка за выполнение задания О(е) вычисляется на основе модели задания по формуле
где Ов - оценка за выполнение программы; Ок - оценка качества программы. Оценка за выполнение вычисляется по модели тестирования. Модель тестирования программы Мт представляет собой три множества:
1. Тг = { і1, 12, • • •, 4 } - множество тестов для проверки выполнения.
2. Я = { г1, г2, •, гк } - множество эталонных ответов на множество тестов Т.
3. В { = { а?ь й2, •, ^ } - множество диагностических сообщений.
Модель тестирования используется системой для автоматической проверки правильности выполнения реализованной программы. Результат г(і) выполнения теста і є Ті сравнивается с соответствующим эталонным результатом г є Я. Результаты сравнения представляют собой булевский вектор В. Оценка за выполнение вычисляется по формуле
где b; - элемент вектора B, равен 0 или і. Таким образом, если все тесты прошли, то оценка за выполнение максимальна и равна 0,6. Если какие-то тесты не прошли, то оценка уменьшается. Диагностическое сообщение (объяснение) d; выдается студенту в том случае, если r(ti) ф r;.
Оценка качества Ок вычисляется только в том случае, если Ов = max. Для вычисления оценки качества программы используется статическая модель программы Ms, которая представляет собой конечную последовательность:
где Му , 1 < ] < п - статическая модель инструкции. Статические модели инструкций, вообще говоря, зависят от языка программирования. Однако практически во всех языках программирования присутствуют инструкции объявления переменных и констант, объявления массивов, операторы присваивания, условный оператор двух видов, три вида оператора цикла, оператор вызова функции, средства определения новых функций (подпрограмм). Многие инструкции могут содержать вложенную последовательность инструкций (условный оператор, оператор цикла, определение функции). Рассмотрим формальные статические модели перечисленных инструкций. Каждая модель представляет собой кортеж. Модель объявления переменной имеет вид
где Т - тип переменной; V - имя переменной; Е - выражение. Квадратные скобки показывают, что элемент модели может отсутствовать. Модель объявления константы имеет вид
Здесь выражение является обязательным. Модель объявления массива может быть представлена так:
где S(E) - последовательность выражений, определяющих размерность массива.
Статические модели операторов определяются так:
Mset = < V, E > - оператор присваивания;
Mf = < E, Ms(t) [, Mf] > - оператор if, где Ms(t) и Ms(f) - вложенные последовательности инструкций, соответствующие ветвям then и else. Ветвь else (последовательность Ms(f)) может отсутствовать;
Mwhile = < E, Ms > - цикл с предусловием;
Mdowhile = < E, Ms > - цикл с постусловием;
Модели различаются только именем. Ms - это тело цикла.
O(e) = (Ов + Ок) x w,
k
MS = MIb M^ — , MIm
MVar = < T, V [, E] >,
MConst = < T, V, E >.
Marray = < T, V, S(E) >,
Mfor = < Ei, E2, E3, Ms > - цикл со счетчиком;
Mcall = < F, s(E) > - вызов функции, где F - имя функции; s(E) - список выражений -
аргументов функции.
Mfunction = < Mheader, MS > - модель определения функции, где Mheader - модель заголовка функции, а Ms - тело функции. Модель заголовка (прототипа) функции имеет вид
Mheader = < F, T, Msdecl >,
где F - имя функции; Е - тип возвращаемого значения функции; MSdecl - последовательность объявлений параметров; MSdecl включает в себя только модели объявлений Mvar, MGonst, Marray. Аналогичные модели можно определить для любого языка программирования.
В реализации статическая модель программы Ms представляет собой корневое бинарное дерево специального вида. Вершинами являются модели инструкций. Каждая вершина, кроме последней, связана со следующей вершиной next-дугой. Таким образом, последовательность инструкций программы отображается в последовательность вершин, евязанную next-дугами. Если статическая модель инструкции содержит в качестве элемента Ms, то соответствующая вершина дерева имеет потомка, с которым связана child-дугой. Таким образом, каждая вершина, имеющая child-потомков, сама является корнем дочернего дерева аналогичного вида, причем количество уровней иерархии не ограничено.
Рассмотрим простейший пример.
int max = a[0]; Mvar
int k = 0; Mvar
for( int i = 1; i < 10; ++i) Mfor
{ if (a[i] > max)
{ max = a[i]; k = i; }
}
printf(“max = %d”, max); Mcall
Слева представлен простой цикл вычисления максимального элемента массива (объявление массива не показано), справа - схема статической модели программы. В схеме показаны только child-связи. Первый столбец показывает основную последовательность вершин дерева:
Ms = Mvar,Mvar, Mfor, Mcan.
Оператор цикла for имеет тело цикла, поэтому вершина Mfor связана child-дугой с Ms. Эта последовательность вершин содержит только Mf. Условный оператор имеет then-ветвь, поэтому вершина Mif связана child-дугой с Ms(t), которая представляет собой последовательность
вершин Mvar, Mvar.
Эталонная статическая модель программы создается преподавателем. Обучающая система создает аналогичную статическую модель Ms во время работы студента. Оценка качества программы вычисляется при сравнении двух этих моделей. Сравнение построенной статической модели и эталонной сводится к сравнению деревьев. В общем случае проблема сравнения двух графов является NP-полной, однако в нашем случае статические модели представляют собой деревья небольшого размера, поэтому сравнение можно выполнить эвристическим рекурсивным алгоритмом полного перебора. Оценка Ок вычисляется как «расстояние» D = f(Ms, Ms) статической модели студента от эталонной статической модели. Расстояние приводится к диапазону [0; 0,4], чтобы общая оценка за выполнение работы не превосходила 1. При этом нулевое расстояние переводится в значение 0,4.
Модель знаний студента представляет собой вектор знаний
K(s) = (pi, ...,p„),
где n = \V\ - количество единиц знаний в модели знаний; pi = p(vt\A), 1 < i < n - условная вероятность, описывающая предположение системы о том, что студент s обладает знанием единицы знаний vi при наличии множества свидетельств Ai, собранных системой при выполнении студентом практических заданий. Отдельным свидетельством a е A является оценка О(е), полученная при выполнении конкретного задания.
Ms =
Mif Ms(t) =
Mvar
Mvar
Таким образом, каждый элемент р, вектора К(я) выражает степень знания студентом 5 единицы знаний V,. Как известно, различают пять уровней усвоения учебного материала [4]: понимание, узнавание, воспроизведение, применение, творческая деятельность. Уровням усвоения для каждой единицы знаний можно поставить в соответствие степень знания студентом единицы знаний V,-: знаний нет (А), новичок (Л), начинающий (В), продвинутый (К), эксперт (Е). Таким образом, единица знаний может интерпретироваться как дискретная случайная величина со значениями А, Л, В, К, Е. Для вычисления распределения вероятностей для каждой единицы знаний (случайной величины) используется байесовская сеть доверия [5]. Сеть представляет собой ациклический граф отношения Ж, определенного выше.
Некоторую проблему представляет собой определение первоначальных вероятностей -уровней знаний. Для этого студенту предлагается набор тестов, выполняя которые он достигает уровня новичка. Начиная с уровня новичка, студент получает задания на программирование -от менее сложных к более сложным. Уровень сложности задания Ь соответствует степеням знания:
1. Ь < 0,4 - для новичка (Л).
2. 0,41 < Ь < 0,7 - для начинающего (В).
3. 0,71 < Ь < 0,9 - для продвинутого (К).
4. 0,91 < Ь < 1 - для эксперта (Е).
На основании вектора знаний определяется интегральный 1(я) уровень обученности студента. В каждый конкретный момент времени разные элементы вектора К(я) показывают разные уровни знаний: от отсутствия знаний до эксперта. Интегральный уровень обученности вычисляется в соответствии с количеством элементов вектора К(я) соответствующего уровня. Общий принцип таков: студент считается достигшим уровня Ь (Ь = Л, В, К, Е), если количество элементов уровня Ь в векторе знаний не меньше 70 %, причем остальные 30 % представляют собой
предыдущий уровень.
Заключение
Методы оценки уровня знаний являются едва ли не самой важной составляющей обучающей системы. В обучающей системе по программированию оценивать уровень подготовленности студента возможно только на основе оценки разработанных программ. Оценка правильности выполнения программы относительно проста, однако недостаточна. Для повышения объективности оценки программы требуется учитывать качество программного кода. Предложенный в статье метод оценки качества на основе сравнения статических моделей программ позволяет в какой-то мере осуществить такую оценку.
Вместе с тем нужно отметить, что реализация этого метода требует полного определения модели предметной области, а также разработки статических моделей для конкретного языка программирования. С другой стороны, метод статических моделей можно применить и при оценивании результатов выполнения заданий в обучающей системе по проектированию с использованием языка ИМЬ.
В настоящее время на кафедре «Автоматизированные системы обработки информации и управления» Астраханского государственного технического университета разрабатывается проект обучающей системы по программированию, в которой предполагается реализовать предложенные модели оценивания. Исследуются различные варианты алгоритмов сравнения статических моделей, в том числе эвристические функции вычисления «расстояния» между моделями.
СПИСОК ЛИТЕРАТУРЫ
1. Атанов Г. А., Пустынникова И. Н. Обучение и искусственный интеллект, или Основы современной дидактики высшей школы. - Донецк: Изд-во ДОУ, 2002. - 504 с.
2. Переверзев В. Ю. Технологии разработки тестовых заданий: справ. руководство. - М.: Е-Медиа, 2005. - 265 с.
3. Рыбина Г. В. Обучающие интегрированные экспертные системы: некоторые итоги и перспективы // Искусственный интеллект и принятие решений. - 2008. - № 1. - С. 22-46.
4. Беспалько В. П., Татур Ю. Г. Системно-методическое обеспечение учебно-воспитательного процесса подготовки специалистов. - М.: Высш. шк., 1989. - 144 с.
5. Тулупьев А. Л., Николенко С. Н., Сироткин А. В. Байесовские сети: логико-вероятностный подход. -
СПб.: Наука, 2006. - 607 с.
Статья поступила в редакцию 24.12.2008
MODELS OF ESTIMATION IN INSTRUCTION PROGRAMMING SYSTEM
V. V. Laptev, V. V. Tolasova
The article deals with the methods of students’ knowledge level estimation in automated instruction systems designed for study of programming sciences. Three models are defined: a domain model, a task model and a student’s knowledge model. Student’s knowledge level is determined by computable supervision -test execution estimation, which is calculated as a sum of test execution accuracy and code quality estimation. The last one is formed as divergence estimation between the etalon program model and the model generated in accordance with student actions.
Key words: knowledge models, a domain model, a task model, a student’s knowledge model, method of students’ knowledge level estimation.