Азы программирования 2001/2002
Турнир Корректора
Инструкции по перекрестной проверке
Критерии оценок. 14/04/01
---------------------------------

Организация рабочего места проверяющего
---------------------------------------
Для проверки полученных работ скопируйте файлы
kor.exe
kor.ini
kor.pcl
kor.pcx,
необходимые для запуска Корректора, в каталог PROVERKA,
который создан при распаковке полученного архива.
  Рекомендую установить атрибут "только для чтения" на весь ка-
талог PROVERKA,  чтобы  проверяющие нечаянно не изменили ориги-
нальные тексты программ. Структура каталога PROVERKA:

PROVERKA
|
|--02
|  |--0211.kor  |
|  |--0211.srd  |  решения задач
|  |  ....      |  команды 3102
|  |--0291.kor  |
|  |--0291.srd  |
|  |  ....      |
|  |--02.txt    |  файл с описанием алгоритмов
|
|--03
|  |--0311.kor  |
|  |--0311.srd  |  решения задач
|  |  ....      |  команды 3103
|  |--0391.kor  |
|  |--0391.srd  |
|  |  ....      |
|  |--03.txt    |  файл с описанием алгоритмов
| ...
|
|--kor.exe      файлы, необходимые для запуска Корректора
|--kor.ini      (эти файлы копируются из среды
|--kor.pcl       программного пакета Курсов)
|--kor.pcx
|
|--instr.txt   текст настоящей инструкции

  Запустив файл kor.exe  и открыв окно "чтение", вы увидите ка-
талоги с решениями всех команд.
  Рекомендую раздать детям бумажные бланки для фиксирования замечаний
по проверяемым решениям и выставления оценок примерно с такой шапкой:

-------------------------------------------------------------------

Работу команды 31___, проверял(и) _________________________________
                                        (имена проверяющих)

                      1  2  3  4  5  6  7  8  9  а  b  c  d  e
Номинал оценки задач: 2  3  3  5  6  5  7  7  9 10  8  7 12 15


Имя   │ Опровергающие тесты, другие замечания│штраф │Итог │Бонус
файла │ по программе                         │за оф.│     │
──────┼──────────────────────────────────────┼──────┼─────┼─────
      │                                      │      │     │
      │                                      │      │     │
      │                                      │      │     │
 ─────┼──────────────────────────────────────┼──────┼─────┼─────

 ......

--------------------------------------------------------------------



Тестирование программ - важная часть обучения
---------------------------------------------
Перекрестная проверка работ продолжает этап обучения на наших Курсах.
Она позволяет:

-- Провести практические занятия с детьми по очень важному и
ответственному этапу создания программного продукта -- его
тестированию на предмет выявления ошибок. Ни одна компьютерная фирма
не выпустит свой программный продукт в свет без тщательной и
всесторонней проверки. Время, затраченное на тестирование готового
продукта, заранее предусматривается, включается в план разработки и по
количеству человеко-часов часто сравнимо со временем создания самого
продукта. Тестируют программы специальные работники фирмы и
обязательно не авторы программы. Как показывает опыт, автор программы
не способен выявить в своем продукте большинство из допущенных им
ошибок. Объясняется это очень просто. Работая над своей программой,
автор оказывается в "плену" собственных представлений и алгоритмов. Он
заставляет программу работать правильно и на это направляет свои
усилия. Человек-тестер, наоборот, прилагает все усилия для того, чтобы
заставить программу работать неверно, "подсовывает" ей такие входные
данные, на которых она начинает "хромать" - выдавать неверные
результаты. Иными словами, у автора программы и проверяющего разные
психологические установки: у одного -- заставить программу работать, у
другого -- "сломать" ее.

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

-- Проверка работ позволит детям познакомиться с решением других ребят
и сравнить их со своими.

Общие рекомендации по проверке
------------------------------

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

2) Проверка качества алгоритма. Нужно внимательно прочитать объяснение
алгоритма, приведенное автором, и проверить его соответствие программе
при помощи запуска "по шагам".

Если Вы заметите в алгоритме погрешность, которая может привести к
неверной работе программы, то придумайте тест (допустимое состояние
среды), который обрабатывается программой неверно. Этот тест послужит
доказательством наличия в программе ошибки.

3) Оценка эффективности алгоритма и программы. Оценивайте
эффективность по трем признакам:

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

y = F(x)

Здесь x -- начальное состояние среды, а y -- конечное, являющееся
решением задачи, а F -- алгоритм (программа).

-- Число строк программы с кодом (чем меньше, тем лучше).

-- Время работы программы (чем меньше движений выполняется в среде,
тем лучше).

Следует отметить, что обычно оптимальность по коду (памяти) вступает в
противоречие с оптимальностью по "телодвижениям" (времени).

В наших задачах мы обычно стараемся оптимизировать "телодвижения"
(память). Если при этом получается короткий код -- радостям нет
предела! Если в среде анализируется (преобразуется) некоторая запись,
то говорят о числе ее проходов. Идеально, когда задача решается за
один проход (просмотр) записи.

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

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


Критерии оценок
---------------

  1. Если задача не решалась командой, то за нее выставляется 0
баллов.

  2. Если задача  имеет несколько вариантов решения, то выстав-
ляется единственная оценка (балл) по лучшему варианту.

  3. Программа не работает: выдается синтаксическая ошибка  или
сообщение "Не  могу". Может быть, это недоразумение? Попробуйте
обнаружить и исправить допущенную автором описку.

  3.1. Описка. Если исправление помогло и программа заработала, снизьте
  оценку за это на 1 балл.

  3.2. Неверное решение. Если ошибки серьезные и связаны с неверным
  алгоритмом или неверной программой, выставляйте за задачу 1 балл.

  4. Программа работает,  но  в  ней  обнаружены грубые ошибки.
(программа работает  только  для  того состояния среды, которое
предложил автор) - выставляйте 2 балла.

  5. Программа работает, но в ней есть  ошибки (обнаружены сос-
тояния среды,  в  которых программа работает неправильно). Выс-
тавляйте оценку в интервале [ 2б ; номинал - 2б ], в зависимос-
ти от характера ошибок и их последствий.

  6. За отсутствие или низкое качество описания алгоритма штраф
до 1 балла.

  7. За  погрешности  оформления  и  комментирования  программы
штраф до 1 балла.

  8. Как и в турнире  Кукарачи,  у всех команд есть возможность
отметить понравившиеся работы соперников БОНУСОМ. В  распоряже-
нии каждой команды и куратора  есть  дополнительно  до 5 баллов
для поощрения особенно красивых, оптимальных решений,  образцо-
вого оформления, других субьективных моментов.

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

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

КТО ЧТО ПРОВЕРЯЕТ:

Команда 3102 проверяет работы команд 3100, 31  , 31
Команда 3103 проверяет работы команд 31  , 31  , 31
Команда 3105 проверяет работы команд 3108, 3110, 3111
Команда 3107 проверяет работы команд 31  , 31  , 31
Команда 3108 проверяет работы команд 3105, 3110, 3111
Команда 3110 проверяет работы команд 3105, 3108, 3111
Команда 3111 проверяет работы команд 3105, 3108, 3110
Команда 3115 проверяет работы команд 31  , 31  , 31
Команда 3100 проверяет работы команд 3102, 31  , 31

Приветствуется проверка дополнительных работ и решений куратора.

Оформление результатов проверки

Результаты проверки должны быть представлены по следующей форме:
--------------------------------------------------------------
Турнир по программированию. II тур. Корректор
Команда:
Руководитель:
Результаты проверки:

n1 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bon NN
n2 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bon NN
n3 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bon NN
n4 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bon NN
......

Об организации проверки.
......

Обоснование оценок
-------------------
Работа команды 31n1
Общее впечатление от работы:
(сначала - что понравилось, затем другие общие замечания)
Задача 1
....
Задача 2
.....
Задача е

Работа команды 31n2
....
--------------------------------------------------------------
В образце использованы следующие обозначения:

n1-n4 - номер команды, работа которой проверялась
b1    - оценка за первую задачу
b2    - оценка за вторую задачу
.....
bd - оценка за задачу d
be - оценка за задачу е
bon - дополнительный балл (общей суммой до 5 баллов по ВСЕМ работам)
NN - номер команды, которая проверяла работу

В комментариях руководитель:

- объясняет, как была организована проверка;
- высказывает свои впечатления о проверенных работах;
- ОБЯЗАТЕЛЬНО обосновывает выставленные оценки.

Посылка результатов проверки

  Результаты проверки высылаются по адресу awr@snezhinsk.ru  до
23:59 вечера 20 апреля 2002 года (электронный штемпель отправи-
теля)
