Journal influence
Bookmark
Next issue
System of test assignment automated genaration
The article was published in issue no. № 4, 2009Abstract: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.
Аннотация:В статье рассматриваются методические аспекты обучения основам алгоритмизации и программирования, подходы к созданию алгоритмов автоматизированной генерации тестовых заданий по информатике и программированию и их программная реализация на примере языка Паскаль.
Authors: (alg@uriit.ru) - , Ph.D | |
Keywords: test assignment, informatics, programming |
|
Page views: 14529 |
Print version Full issue in PDF (4.85Mb) |
В настоящее время информационные технологии стремительно внедряются во все сферы жизни и деятельности общества. Растет потребность в специалистах в области использования существующих и создания новых информационных технологий. Результативность обучения таких специалистов на начальном этапе в большой степени зависит от исходного уровня знаний, а также от того, насколько развито алгоритмическое мышление. Для проверки данных характеристик автором статьи в ходе исследований формирования системы обучения профессиональной информатике на базовом уровне были разработаны тестовые задания, которые оказались эффективным инструментом для определения уровня подготовки по алгоритмике [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.
Для генерации тестовых заданий в модуль генерации циклов передается входная информация, введенная пользователем: количество переменных, количество итераций цикла, количество вариантов тестовых заданий. После запуска данного модуля случайным образом генерируются матрица преобразования переменных, их начальные значения, вектор сдвига, а также логическое условие путем выбора арифметических операций (при построении арифметических выражений) и операций отношения. Далее формируется фрагмент кода, содержащий циклический алгоритм, удовлетворяющий заданным условиям. После вычисления значений переменных, участвующих в сгенерированном фрагменте, пользователю выдается результат – тестовое задание в виде фрагмента программного кода и конечных значений переменных. Сгенерированные варианты тестовых заданий могут быть отбракованы вручную через пользовательский интерфейс системы, выгружены на диск в формате системы электронного обучения – Moodle XML в текстовых форматах .doc, .html, .rtf или распечатаны в виде вариантов тестов для бланочного тестирования. Следует отметить, что «Система автоматизированной генерации тестовых заданий» зарегистрирована Федеральной службой по интеллектуальной собственности, патентам и товарным знакам в реестре программ для ЭВМ (№ 2006613619) и применяется в учебном процессе Югорского физико-математического лицея и Института прикладной математики, информатики и управления Югорского государственного университета. Данная разработка может эффективно использоваться в курсах по программированию при организации электронного и дистанционного обучения, позволяя значительно упростить процесс подготовки тестовых заданий и обеспечить уникальными вариантами тестов сотни обучающихся. Разработанный автором статьи подход к автоматизированной генерации тестовых заданий позволяет создавать аналогичные программы для любой предметной области, в которой возможна формализация условий задач, составляющих тестовые задания, обеспечивая тем самым персонализированный образовательный контент для систем электронного обучения. Литература 1. Алсынбаева Л.Г. Система стартового обучения профессиональной информатике: дис. … канд. физ.-мат. наук. Новосибирск: НГУ, 1997. 105 с. 2. Вирт Н. Систематическое программирование. Введение. М.: Мир, 1977. 183 с. |
Permanent link: http://swsys.ru/index.php?id=2394&lang=en&page=article |
Print version Full issue in PDF (4.85Mb) |
The article was published in issue no. № 4, 2009 |
Perhaps, you might be interested in the following articles of similar topics:
- Повышение эффективности создания экземпляров классов при использовании компонентной технологии проектирования
- Параллельная обработка данных в программном обеспечении систем планирования использования воздушного пространства
- Аспектно-ориентированное программирование в контексте решения вопросов повышения эффективности экономических показателей IT-проектов
- Генератор текста программ в исходном виде для систем реального времени
- Адаптивные нечеткие системы по таксономии класса FOREL
Back to the list of articles