Методы подготовки тестов по информатике и программированию

Вид материалаДоклад
Подобный материал:

Методы подготовки тестов по информатике и программированию


Алсынбаева Л.Г.


Югорский НИИ информационных технологий, г.Ханты-Мансийск


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

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

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

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

В текущем учебном году тестирование, проведенное для студентов первого курса факультета информатики и прикладной математики Югорского государственного университета, показало, что подавляющее большинство студентов, поступивших на первый курс, нуждается в обучении основам алгоритмизации и программирования практически «с нуля». Наилучшая оценка – 75% от максимально возможного балла набрали 10% испытуемых, не смогли выполнить ни одного задания 30% испытуемых. К сожалению, данные результаты тестирования типичны.

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

Изучая публикации по данной теме, читаем в статье Дональда Кнута «Алгоритмическое и математическое мышление»: «…в первом приближении 2% всех людей «мыслят алгоритмически» — в том смысле, что они могут легко рассуждать об алгоритмических процессах». То есть, если на первом курсе обучается 100 студентов, то только два из них способны мыслить алгоритмически. Заявление, конечно, спорное, однако результаты тестирования, приведенные выше, подтверждают необходимость активизации деятельности по разработке специальных инструментов формирования алгоритмического мышления.

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

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

Заметим, что тесты по алгоритмике типа «Что будет в результате работы данного фрагмента программы» имеют двойную ценность:

а) формирование «внутреннего процессора»;

б) контроль знания ЯВУ и качество этого сформированного «внутреннего процессора».

Для генерации тестовых заданий по алгоритмике можно выделить два подхода:
  1. «Один фрагмент программы – одно тестовое задание»,
  2. «Один фрагмент программы – много тестовых заданий».

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

Большинство тестов такого рода можно получить обычным вычислительным экспериментом. Шаги:

- Подготовка фрагмента алгоритма

- Подготовка входных данных

- Трансляция, отладка и запуск

- Получение выходного результата

- Формирование теста

Однако данный процесс достаточно трудоемок, в то время как одно из требований хороших курсов – неповторяемость заданий, особенно контрольных, для обучаемых.

Повышение производительности создания тестов по алгоритмике достигается путем следующих приемов:

- Автоматическая генерация фрагментов программ, отражающих заданную тему.

- Формирование пакета запросов процедур

- Эмуляция (организация) ввода из текстового файла и вывода в тестовый файл

- Формирование идентификации фрагмента вводных данных, соответствующего алгоритма (процедуры), идентификация выходного фрагмента

- Компоновка тестов из фрагментов текстов входных данных и фрагментов текста программы (собственно, тексты процедур)

- Укладка каждого фрагмента выходного текста в качестве правильного ответа на вопрос теста.

2. Способ подготовки «Один фрагмент программы – много тестов» формирует и проверяет один из навыков или элементов ЯВУ. Много тестов необходимо для индивидуального контроля каждого тестируемого. В данном случае фрагмент программы должен иметь на входе данные и на выходе – результат. Варьирование вопроса теста путем изменения вариантов входных данных позволяет получить множество тестов. При генерации заданий по типу «один алгоритм – много тестов» в качестве варианта типовых задач может быть предложена «Манипуляция с текстами».

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

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

В настоящее время в Центре электронных технологий образования Югорского НИИ информационных технологий ведутся работы по созданию автоматизированного рабочего места преподавателя по подготовке тестов по алгоритмизации и программированию. Ядром системы служат модули автоматизированной генерации тестовых заданий и модуль автоматической «отбраковки» тестовых заданий по указанным критериям и ручного редактирования пользователем системы.


Литература:

1. Алсынбаева Л.Г.  Система стартового обучения профессиональной информатике. Новосибирск, 1997. (автореферат кандидатской диссертации)