ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Публикационная активность

(сведения по итогам 2016 г.)
2-летний импакт-фактор РИНЦ: 0,493
2-летний импакт-фактор РИНЦ без самоцитирования: 0,389
Двухлетний импакт-фактор РИНЦ с учетом цитирования из всех
источников: 0,732
5-летний импакт-фактор РИНЦ: 0,364
5-летний импакт-фактор РИНЦ без самоцитирования: 0,303
Суммарное число цитирований журнала в РИНЦ: 5022
Пятилетний индекс Херфиндаля по цитирующим журналам: 355
Индекс Херфиндаля по организациям авторов: 499
Десятилетний индекс Хирша: 11
Место в общем рейтинге SCIENCE INDEX за 2016 год: 304
Место в рейтинге SCIENCE INDEX за 2016 год по тематике "Автоматика. Вычислительная техника": 11

Больше данных по публикационной активности нашего журнале за 2008-2016 гг. на сайте РИНЦ

Вход


Забыли пароль? / Регистрация

Добавить в закладки

Следующий номер на сайте

4
Ожидается:
16 Декабря 2017

Система автоматизированной генерации тестовых заданий

System of test assignment automated genaration
Статья опубликована в выпуске журнала № 4 за 2009 год.[ 16.12.2009 ]
Аннотация:В статье рассматриваются методические аспекты обучения основам алгоритмизации и программирования, подходы к созданию алгоритмов автоматизированной генерации тестовых заданий по информатике и программированию и их программная реализация на примере языка Паскаль.
Abstract:The following issues are considered in this article: methodic aspects of basics of algorithmization and programming teaching, approaches to creation of automated generation of informatics and programming test assignment and their programmed implementation demonstrated with an example of Pascal language.
Авторы: Алсынбаева Л.Г. (alg@uriit.ru) - Югорский НИИ информационных технологий, г. Ханты-Мансийск, , , кандидат физико-математических наук
Ключевые слова: тестовое задание, информатика, программирование
Keywords: test assignment, informatics, programming
Количество просмотров: 7676
Версия для печати
Выпуск в формате PDF (4.85Мб)

Размер шрифта:       Шрифт:

В настоящее время информационные технологии стремительно внедряются во все сферы жизни и деятельности общества. Растет потребность в специалистах в области использования существующих и создания новых информационных технологий.

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

Результаты тестирования студентов и учащихся в течение ряда лет говорят о низком уровне школьной подготовки. Так, например, тестирование, проведенное в 2007–2008 учебном году в одном из региональных российских вузов, показало, что подавляющее большинство студентов-первокурс­ников нуждается в обучении основам алгоритмизации и программирования практически с нуля. Наилучшую оценку – 75 % от максимально возможного балла получили 12 % испытуемых, не смогли выполнить ни одного задания 30 % испытуемых.

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

Важно создать у обучаемого внутренний процессор, то есть развить способность к алгоритмизации умственных действий. Один из эффективных способов формирования внутреннего процессора – прокручивание фрагментов программ в уме. По такому принципу создаются тесты по алгоритмике типа: «Что будет в результате работы данного фрагмента программы?».

Заметим, что подобный тип тестов ценен вдвойне – формирует внутренний процессор обучаемого и контролирует знания языка программирования высокого уровня.

Создание контрольных измерительных материалов – актуальная творческая задача в любой дисциплине. Подготовка множества вариантов тестовых заданий требует высокой квалификации преподавателя и значительных затрат времени. Для повышения эффективности подготовки тестов целесообразны создание технологии автоматизированной генерации тестовых заданий и ее программная реализация в виде инструментального средства, позволяющего преподавателю сгенерировать тестовые задания по основным разделам алгоритмизации и программирования на языке высокого уровня (Паскаль, Delphi, С, Java и др.).

В Центре информационных технологий тес- тирования Югорского НИИ информационных технологий создана программная система, позволяющая автоматически генерировать тестовые задания по указанным параметрам. Система состоит из нескольких модулей (по количеству изучаемых тем), имеющих единый интерфейс и специализированный редактор для отбраковки и ручного редактирования тестовых заданий по усмотрению преподавателя. Тестовые задания генерируются в виде фрагментов программы на языке Паскаль.

В основе технологии автоматизированной генерации тестов заложен принцип «один фрагмент программы – одно тестовое задание». Эффективность достигается за счет автоматизации процесса генерации фрагментов программ и автоматической отбраковки заданий по указанным крите- риям.

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

Тестовые задания, генерируемые этим модулем, включают циклические инструкции с предусловием, постусловием и счетчиком цикла, а также вопрос «Какие значения примут переменные, используемые в данном фрагменте программы, по окончании его выполнения?». Все варианты генерируемых тестовых заданий должны быть разными.

Приведем синтаксис и алгоритмы работы инструкций цикла на языке Паскаль [2], которые были положены в основу работы данного модуля.

Цикл с предусловием имеет вид: while B do S, где B – логическое выражение; S – инструкция.

Цикл может закончиться только в том случае, если инструкция S так влияет на выражение B, что через конечное число повторений значением выражения B станет false. Следовательно, в S должно быть по крайней мере одно присваивание переменной, которая встречается в B. Обозначим через V множество всех переменных, встречающихся в генерируемом фрагменте программы. Тогда циклическую инструкцию можно представить в виде схемы программы:

V:=v0; while p(V) do V:=f(V),

где p – условие (логическое выражение); f – функция. Заменяя соответствующим образом V, p и f, можно получить различные конкретные фрагменты программы, имеющие одинаковую структуру.

Цикл с постусловием имеет вид: repeat S until B, где B – логическое выражение; S – инструкция.

Инструкция S выполняется до тех пор, пока значение логического выражения B равно false. Обозначим через V множество всех переменных, встречающихся в генерируемом фрагменте программы. Циклическую инструкцию можно представить в виде схемы программы:

V:=v0; repeat V:=f(V) until p(V),

где p – условие (логическое выражение); f – функция. Как и в цикле с предусловием, заменяя соответствующим образом V, p и f, также можно получить различные конкретные фрагменты программы, имеющие одинаковую структуру.

Цикл со счетчиком имеет вид:

for V:= a to b do S,

где S – повторяемая инструкция; V – скалярная переменная (параметр цикла); a и b – выражения того же типа, что и V.

Данная циклическая инструкция означает, что две инструкции V:=x; S выполняются для каждого значения x в интервале от a до b. Повторные действия выполняются последовательно для значений x, выбираемых в возрастающем (на 1) порядке в интервале от a до b.

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

Например, при генерации тела цикла можно использовать последовательность операторов присваивания. В левой части каждого оператора присваивания стоит переменная из множества V, а в правой – арифметическое выражение, включающее переменные из множества V (количество операторов присваивания в теле цикла соответствует  количеству переменных).

Рассмотрим один из вариантов алгоритма автоматизированной генерации тестовых заданий циклического типа.

Пусть n – количество переменных; N – максимальное количество итераций; V – множество переменных, используемых в генерируемом фрагменте программы; V0 – множество констант, задающих начальные значения переменным множества V; p(V) – логическая функция; С – матрица преобразования переменных размером n´n, каждый элемент матрицы – целое число в диапазоне от -9 до 9; с – вектор сдвига переменных, состоящий из n целых чисел в диапазоне от -9 до 9.

В качестве логического выражения p(V) используем функции типа p(V)q(V) <операция сравнения> g(V), где q(V), g(V) – арифметические выражения с переменными; <операция сравнения> – это одна из операций сравнения: <, >, , , =, .

В таблице приведен общий вид тестовых заданий для различных типов циклов. Тело цикла формируется как последовательность операторов присваивания, сгенерированных на основе множества переменных V, матрицы преобразования переменных C и вектора сдвига c. Функция f(V), которая используется для генерации тела цикла, имеет вид f(V)=V*C+c.

Тип цикла

Общий вид цикла

while

V:=V0; while(p(V)) do V:=V*C + c; 

for

V:=V0; for i:=0 to N do V:=V*C + c;

repeat

V:=V0; repeat V:=V*C + c; until(p(V));

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

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

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

Сгенерированные варианты тестовых заданий могут быть отбракованы вручную через пользовательский интерфейс системы, выгружены на диск в формате системы электронного обучения – Moodle XML в текстовых форматах .doc, .html, .rtf или распечатаны в виде вариантов тестов для бланочного тестирования.

Следует отметить, что «Система автоматизированной генерации тестовых заданий» зарегистрирована Федеральной службой по интеллектуальной собственности, патентам и товарным знакам в реестре программ для ЭВМ (№ 2006613619) и применяется в учебном процессе Югорского физико-математического лицея и Института прикладной математики, информатики и управления Югорского государственного университета.

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

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

Литература

1.   Алсынбаева Л.Г. Система стартового обучения профессиональной информатике: дис. … канд. физ.-мат. наук. Новосибирск: НГУ, 1997. 105 с.

2.   Вирт Н. Систематическое программирование. Введение. М.: Мир, 1977. 183 с.


Постоянный адрес статьи:
http://swsys.ru/index.php?page=article&id=2394
Версия для печати
Выпуск в формате PDF (4.85Мб)
Статья опубликована в выпуске журнала № 4 за 2009 год.

Возможно, Вас заинтересуют следующие статьи схожих тематик: