Заинтересовал вопрос по системам проведения соревнований с научной точки зрения. Может кто-то знает научные статьи или кто-то защищал диссертации по данной теме? Интересно рассмотрение этого вопроса как с технической так и педагогической точки зрения.
Буду благодарен за любую информацию по данному вопросу.
Станкевич А.С. Методология и технические решения для проведения олимпиад по информатике и программированию (автореферат)
На хабре видел давно цикл статей о том, как проводят олимпиады школьников в НГУ. Там упоминалось, что тестирующая система была защищена как диплом (и информация о ней самой тоже была). Можно попробовать поискать там.
Я в качестве своего диплома тоже выбрал написание собственной тестирующей системы, но пока была готова только web оболочка для уже существующей системы проверки задач.
Имел в этом весеннем семестре непродолжительный опыт применения проверяющей системы на практических занятиях по дисциплинам "Алгоритмы и структуры данных" и "Дискретная математика".
Система использовалась с двумя целями:
автоматизация проверки решений задач студентов;
внесение в учебный процесс дух соревновательности;
дать возможность каждому студенту работать в своём ритме.
Эти цели были достигнуты. Более того, многие студенты были огорчены, когда я объявил о том, что прекращаю использовать эту систему и возвращаюсь на традиционную методику проведения занятий.
Что такая система не может решить или помочь решить:
необходимость просмотра программ на предмет используемых методов программирования, а также на предмет стиля кодирования;
необходимость просмотра программ на предмет сдачи чужого решения.
Возможно вторая проблема в каких-то других системах как-то решается, но первую полагаю разрешить нелегко.
Есть и другие издержки. Главная -- необходимо обеспечить качественную подготовку упражнений, которая включает в себя все те же самые этапы, что и подготовка олимпиадных задач (условие, ограничения, лимиты, тесты, чекеры, авторские решения). В чём издержка? Требуется очень много времени, чтобы качественно проделать эту работу.
Мой вывод из полученного опыта: использовать систему, но при условии наличия времени на подготовку задач.
А почему-бы не использовать тестирующую систему как некое "минимальное условие" для проверки решения преподавателем? То есть преподаватель не смотрит код, пока задача не прошла проверку на работоспособность в системе автоматической проверки? У нас сейчас используется такой подход и время работы преподавателя это вроде сокращает (особенно если задача представляет сложность для студента и он сперва тратит кучу времени чтобы заставить программу работать впринципе, а уже потом преподаватель смотрит код, делает замечания, студент их правит и опять преподаватель проверяет, что после изменений программа продолжает получать AC ).
Всё так и есть. Никаких проверок, пока не сдашь в систему. Очень удобно, часто сразу видно, что неправильно делает студент. Ведь каждый тест -- это проверка каких-то возможных ошибок в решении.
Есть ещё один плюс использования системы -- она дисциплинирует в отношении написания кода. Нельзя схалтурить и подсунуть неполное или неправильное решение, при этом нужно соблюсти все требования условия, как-то формат ввода-вывода, ограничения, лимиты.