Всем привет!
Как многие знают, я, помимо всего прочего, веду у студентов курс Linux/Unix, в рамках которого читаю и основы bash как языка. Кроме того, с будущего года мне, вероятно, отдадут курсы сетей и ОС (на практиках по ОС пишут проги с использованием пайпов, shm, семафоров и мьютексов).
И вот размышлял я сейчас: студентов и курсов много, а я один. Хочется и с девушкой в киношку сходить, и когда-никогда пингвина на пузе погонять, да и над диссером работать надо будет, а ещё саморазвиваться хочется... Встаёт задача автоматизации труда по проверке выполнения студентами заданий по практике.
С сетями всё более-менее просто: берём питон, ставим net-snmp, ставим fping, ставим scapy, пишем набор сценариев - и готово. Натравливаем получившееся на студенческие топологии, читаем таблицы маршрутизации, таблицы vlan и всё прочее, сравниваем с тем, что должно получиться - вуаля, проверка топологии автоматизирована. Просим ребят рассказать, что они сделали, зачем и почему так надо/не надо делать - всё, лаба принята.
Сложнее с программированием. Технически нет ничего сложного написать тот же набор тестов (благо, проги имеют консольный интерфейс). Оговариваем правила ввода-вывода - корректность кода проверили. Встаёт вопрос с отлавливанием плагиата. Понятно, что никаких сил и никакой фантазии не хватит, чтобы каждый семестр менять задания. Значит, проблема плагиата распространяется только на студентов одной группы. В случае с кодом на С и заданиями по ОС ещё можно как-то развернуться - кода достаточно много, есть, что и с чем сравнивать. Но как проверить принадлежность кода на баше сдавшему его? Кода мало, чаще всего задача решается одним способом, сами задачки тоже большими не сделаешь, да и не надо на баше длинные простыни писать, не для того он. А проверять все работы ой как не хочется... Что посоветует лороразум?