LINUX.ORG.RU
ФорумTalks

Автоматизация труда преподавателя


0

0

Всем привет!

Как многие знают, я, помимо всего прочего, веду у студентов курс Linux/Unix, в рамках которого читаю и основы bash как языка. Кроме того, с будущего года мне, вероятно, отдадут курсы сетей и ОС (на практиках по ОС пишут проги с использованием пайпов, shm, семафоров и мьютексов).

И вот размышлял я сейчас: студентов и курсов много, а я один. Хочется и с девушкой в киношку сходить, и когда-никогда пингвина на пузе погонять, да и над диссером работать надо будет, а ещё саморазвиваться хочется... Встаёт задача автоматизации труда по проверке выполнения студентами заданий по практике.

С сетями всё более-менее просто: берём питон, ставим net-snmp, ставим fping, ставим scapy, пишем набор сценариев - и готово. Натравливаем получившееся на студенческие топологии, читаем таблицы маршрутизации, таблицы vlan и всё прочее, сравниваем с тем, что должно получиться - вуаля, проверка топологии автоматизирована. Просим ребят рассказать, что они сделали, зачем и почему так надо/не надо делать - всё, лаба принята.

Сложнее с программированием. Технически нет ничего сложного написать тот же набор тестов (благо, проги имеют консольный интерфейс). Оговариваем правила ввода-вывода - корректность кода проверили. Встаёт вопрос с отлавливанием плагиата. Понятно, что никаких сил и никакой фантазии не хватит, чтобы каждый семестр менять задания. Значит, проблема плагиата распространяется только на студентов одной группы. В случае с кодом на С и заданиями по ОС ещё можно как-то развернуться - кода достаточно много, есть, что и с чем сравнивать. Но как проверить принадлежность кода на баше сдавшему его? Кода мало, чаще всего задача решается одним способом, сами задачки тоже большими не сделаешь, да и не надо на баше длинные простыни писать, не для того он. А проверять все работы ой как не хочется... Что посоветует лороразум?


Так вот откуда оказывается у ЕГЭ с его галочками ноги то растут. А я то думал. А ларчик то просто открывается.

bibi
()
Ответ на: комментарий от hc

Причём тут егэ?

Так, в голову вдруг пришло.

Anyway, сдавать то они все равно тебе лично будут? И, очевидно, объяснять что как и почему они делали? Иначе как проверить, что человек пусть даже и скомуниздив лабу но хотя бы прочитал её и попытался вникнуть в содержимое? Это по всей видимости должно отнимать бОльшую часть времени. А заработала она у него или нет или же не полностью - это уже детали. Что лучше - студент, который сдал кристальную аки слеза младенца лабу но нифига в ней не понял или тот, кто что-то делал читал вникал писал но вот так до конца она у него и не получилась => автомат сказал что мол 'годен к строевой службе'?

bibi
()

Студент должен быть способен ответить за каждый символ написанного кода.

lirq
()

То, что его программа проходит тест - это допуск к экзамену. На нем все и выяснится.

lirq
()

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

nu11 ★★★★★
()
Ответ на: комментарий от bibi

Естественно, финальное решение принимаю я. Говорить о САУ не стоит, скорее об АСУ. То есть участие системы чисто консультативное - а справился ли студент с необходимым минимумом, чтобы было, о чём говорить

hc
() автор топика
Ответ на: комментарий от hc

Естественно, финальное решение принимаю я. Говорить о САУ не стоит, скорее об АСУ. То есть участие системы чисто консультативное - а справился ли студент с необходимым минимумом, чтобы было, о чём говорить

Ну может быть, может быть. В таком случае обычный набор юнит-тестов и вперед, с песнею. Прошел тесты - получил доступ к телу. Не прошел - иди, пиши.

bibi
()
Ответ на: комментарий от lirq

Естественно. Я себе вижу это так:

1) Выдаётся задание

2) Студент его делает, результат скармливается системе

3) Система говорит, соответствует ли результат заданию

4) Открывается код и разбирается или построчно (если это что-то маленькое), или избранными частями. Или что-то вроде «а покажите, где у вас белки еб^W^W вход в критическую секцию»

Хочется сделать так, чтобы не приходилось вручную генерировать результат «знаете, а этот код я видел 10 минут назад». Пусть машина этим занимается. Вот и думаю, как этого достичь

hc
() автор топика
Ответ на: комментарий от bibi

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

hc
() автор топика
Ответ на: комментарий от hc

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

Ну это в принципе то и есть. Допустим, программа что-то считает. Получает входящие данные и выводить результат на терминал. Сравнивается вход с разобранным ожидаемым выходом и делается оценка - да или нет. Ну или лучше конечно степень совпадения а не 0/1. Если не быть совсем уж жестким.

bibi
()
Ответ на: комментарий от hc

Дело не в плагиате. Даже если будет 100 вариантов заданий, часть студентов будет помогать (читай писать за них) решать им задания. Разве что садить перед собой и заставить написать программу. Что интересно, определенная (как правило, большая) часть студентов, даже если сдаст каким-то чудом экзамен (выучит наизусть, спишет, etc), не будет знать о программировании НИЧЕГО. И это абсолютно не зависит от преподавателя. Такие студенты, им ничего не надо. Говорю как студент, видел это уже мильен раз.

lirq
()

А если, к тому же, это студенты не ИТ-специальности, то все еще грустней. А если еще и гуманитарии...

lirq
()
Ответ на: комментарий от lirq

Ну, в помощи ничего плохого нет. Хуже, когда тупо копипастят код. Когда у нас был курс ОС, на 60 человек существовало 4-5 уникальных решений задач. 60% решений содержали 90% кода одного из таких решений. Второе было моим, но я там реализовал много больше, чем надо было в задании, поэтому мой код не брал никто :)

И повторения такой ситуации не хочу. Пусть хоть имена переменных сменят, что ли... Сверять md5 и gpg-подпись :) Чтоб одно и то же не подсовывали

hc
() автор топика

Я студентов на зачёте спрашиваю по всему курсу.

Недостаток только один, много времени уходит на одного студента.

keeper_b ★★★★
()
Ответ на: комментарий от hc

>Ну, в помощи ничего плохого нет.

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

Пусть хоть имена переменных сменят, что ли...

Да в принципе пофиг, главное чтобы они понимали, как он работает и могли модифицировать.

lirq
()

Автоматизация труда преподавателя полностью ложится на родительский комитет, который без лишних обсуждений-голосований собирает бабло на день рождения, день смерти, свадьбы, крестин, разводов и просто плохого самочувствия УЧИТЕЛЯ и его приблуды. Зашибись. В первопрестольной. Либо повышайте им, «нищим» в CR-V, зарплату, либо оградите от их неумеренных аппетитов.

TGZ ★★★★
()

Ах да, при защите лаб сажаю к себе и прошу написать какое нибудь простенькое задание в тему лабы.

keeper_b ★★★★
()
Ответ на: комментарий от lirq

> Не видел ни одной девушки, способной написать хотя бы 5 строчек кода.

А я знаю такую.

Sphinx ★★☆☆
()
Ответ на: комментарий от lirq

> Не видел ни одной девушки, способной написать хотя бы 5 строчек кода.

А вот тут могу поспорить. Эту историю рассказывал уже много раз расскажу ещё раз - при написании курсового по башу девушка использовала awk, хотя в курсе он упоминался только мимоходом, на уровне названия и назначения. Более того, вся моя группа (и девушка в том числе) усвоила минимум регексов буквально с первого объяснения. И они успешно как писали регексы, так и компилировали готовые в голове. Я аж поразился

hc
() автор топика
Ответ на: комментарий от TGZ

Это проблема родительского комитета. В конце концов, их много. Начальству школы/института невыгоден коллективный иск

hc
() автор топика
Ответ на: комментарий от Sphinx

Очень интересно, спасибо

hc
() автор топика
Ответ на: комментарий от keeper_b

>Ах да, при защите лаб сажаю к себе и прошу написать какое нибудь простенькое задание в тему лабы.

Во! По тому, как человек это делает, можно узнать о его подготовке (тупо сидит строчи, оглядывается на соседей, ищет примеры кода в лекциях etc). Можно еще попросить комментировать, что он пишет (объявляю переменную, делаю цикл, вот тут кодим bubble sort: суть в том, что бла-бла-бла).

lirq
()
Ответ на: комментарий от hc

>А вот тут могу поспорить.

Я рад за Вас! Но мне не встречались :(. Это, не говорит, конечно, о том, что их нет, но согласитесь, что из 10 среднестатистических студенток 9 будут явно не в теме. А десятая будет писать по чужим примерам, хоть что-то понимая...

lirq
()
Ответ на: комментарий от lirq

> В большинстве случаев «помощь» сводится к написанию кода за этого человека. Особенно женский пол. Не видел ни одной девушки, способной написать хотя бы 5 строчек кода.

Наверное, мне сильно везёт, потому что девушки, способные написать много больше 5 строк (и притом сложного и полезного кода), мне встречаются ежегодно.

oami ★★
()
Ответ на: комментарий от oami

>Наверное, мне сильно везёт, потому что девушки, способные написать много больше 5 строк (и притом сложного и полезного кода), мне встречаются ежегодно.

Где? в ВУЗе или софтварной компании? Если в ВУЗе то какая специальность и какой ВУЗ?) Думаю от этого многое зависит)))

lirq
()

Понятно, что никаких сил и никакой фантазии не хватит, чтобы каждый семестр менять задания


А может стоить изменить суть заданий?

Что если сделать задания как-то так: берется проект с соурсфоржа или еще откуда-нить и просится починить/придумать что-либо.

И задание хорошее и на благо всем и вся.

elf
()
Ответ на: комментарий от elf

Что если сделать задания как-то так: берется проект с соурсфоржа или еще откуда-нить и просится починить/придумать что-либо.

Тебе не жалко пользователей этих 'проектов с соурсфоржа'? Починить, допустим, гном или кде (лишь как один из примеров) сможет только полная перезаливка генетического материала их кодеров. Какое это нафик студенческое задание? Нет, конечно, практика показывает, что студенты сильно приложили руку к этим проектам. Отлаживаются так сказать на кошечках. Но ведь и результаты видны невооруженным взглядом. Откровенные локостеры со всеми вытекающими. Хватит уже писать лабы в теле живых индастриал грейд проектов!

bibi
()
Ответ на: комментарий от elf

Встаёт вопрос с отлавливанием плагиата.

md5sum

Зачем так обижать студентов? Даже гуманитарий в конце-концов догадается что мол если добавить один лишний пробельчик то 'проверка' пройдёт на ура. Или в крайнем случае подскажет кто.

bibi
()
Ответ на: комментарий от lirq

> Где? в ВУЗе или софтварной компании?

В ВУЗе. Специальности АСУ, прикладная математика... И да, потом эти девушки оказываются в софтверных компаниях :)

oami ★★
()
Ответ на: комментарий от bibi

Слышал что чувак отлавливал следующи образом: сравнивал потоки лексем на схожесть. Поток лексем - достаточно хороший способ проверки. Никакие переименовывания и переформатирования не помогут. Если правильный дифф - так еще и с перестановками можно бороться.

theos ★★★
()
Ответ на: комментарий от theos

Слышал что чувак отлавливал следующи образом: сравнивал потоки лексем на схожесть. Поток лексем - достаточно хороший способ проверки. Никакие переименовывания и переформатирования не помогут. Если правильный дифф - так еще и с перестановками можно бороться.

А как определялся критерий схожести?

bibi
()
Ответ на: комментарий от bibi

А как определялся критерий схожести?

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

bibi
()

>никаких сил и никакой фантазии не хватит, чтобы каждый семестр менять задания

Сделай так, чтобы прошлые решения были недостаточны. Например какая-то «игра» без общеизвестной победной стратегии, «сдал» тот, чей бот выигрывает не менее 55% партий у лучших «прошлогодних». Тогда старые исходники можно не прятать, пусть изучают, исправлять чужое тоже мозги нужны. Правила игры можно слегка менять раз в несколько лет, что обеспечит автоматическое понижение качества «старых», так, чтобы «максимум» не был достигнут. И проверять легко, запустил и по киношкам с девушками, пока посчитает.

DonkeyHot ★★★★★
()

На ум лезут мощные олимпиадные системы в духе ElJudge. В крайнем случае можно свой скрипт на коленке сваять.

В любом случае вменяемой защиты от плагиата не будет.

melkor217 ★★★★★
()

Просим ребят рассказать, что они сделали, зачем и почему так надо/не надо делать - всё, лаба принята.

Наркоман? А если у студента проблемы с краткосрочной памятью?

artb1sh
()
Ответ на: комментарий от artb1sh

Наркоман? А если у студента проблемы с краткосрочной памятью?

Даун чтоль? Так это не в универ. Это в другое заведение.

bibi
()
Ответ на: комментарий от bibi

Diff с перестановками, как изсвестно, NP полная задача . Так чyть не «чуть-сложнее» ;) Ну трюков можно добавить. Но мне кажется что этого метода боле-менее достаточно (чувак в школе преподавал) - от списывания все равно на 100% не спасет ни что.

theos ★★★
()

> Понятно, что никаких сил и никакой фантазии не хватит, чтобы каждый семестр менять задания.

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

P.S. Неделю назад примерно 15 минут высняли с одним второкурсником что такое скалярное произведение, а затем выясняли что такое сумма векторов - тошнёшенько.

Evgueni ★★★★★
()
Ответ на: комментарий от lirq

> из 10 среднестатистических студенток 9 будут явно не в теме. А десятая будет писать по чужим примерам, хоть что-то понимая...

ЮУрГУ, кафедра ЭВМ. Категорически не соглашусь с данным утверждением :)

hc
() автор топика
Ответ на: комментарий от elf

Фокусы с допиливанием чужих проектов отлично укладываются в такие дисциплины, как «программирование на языках высокого уровня» - они достаточно общие, чтобы давать свободное задание (кстати, этот вариант мы с преподавателем С обсуждаем). В случае с башем всё сложнее - я лично не знаю ни одного большого проекта на баше, который бы требовал допиливания (да и рад этому, ну не для того баш). В случае с курсом ОС единственным вариантом мне видится допиливание какого-нибудь Minix или ReactOS, но для этого студент уже в начале семестра должен знать весь курс. Зачем тогда курсовая? В общем, это хорошо, но не везде

hc
() автор топика
Ответ на: комментарий от artb1sh

Студент? Кто писал за тебя?

hc
() автор топика
Ответ на: комментарий от DonkeyHot

Это интересная идея, реализация такой системы даже на кандидатскую потянет :) Пока только не знаю, с какой стороны прикрутить специализированные задания...

Ещё вижу проблему в том, что оптимальный вариант всё равно один. И рано или поздно код половины группы будет совпадать по независящим от них причин

hc
() автор топика
Ответ на: комментарий от lirq

>Не видел ни одной девушки, способной написать хотя бы 5 строчек кода.

Из дома-то выйди :)

yoghurt ★★★★★
()

У нас в универе один из преподов принимал так: задание - делаешь, его особо не смотрят, главное, чтобы работало как надо, а зачет за лабу заключался в том, чтобы добавить/исправить что-то в лабе. Если студент тупит больше 10 минут - низачот.

Dark_SavanT ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.