Pull to refresh

Comments 146

Хммм. А как бороться с рефакторингом — буквально замена стиля именования переменных, постановки скобок и сравнения с константами (константа слева или справа) уже делает код абсолютно непохожим на исходный.

Ну и эта схема хороша, когда у всех студентов постоянный хороший доступ к интернетам. Не знаю, как поможет это против старинной традиции загружать всё в последний день до дедлайна, ибо пишется в тот же день.
Именно рефакторинг. Или обфускация(если исходники не читаются, а только запускается код). Плюс простенький такой скриптик, генерирующий комментарии от балды в стиле «проведен рефакторинг базовых классов», «сделана оптимизация математических операций» и изменяющий существующие комментарии в стиле «пофикшено» — «исправлено», «изменено» — «переделано» и т.д.
Есть мнение, что студенту спсобному на такое проще написать универский курсовик, чем этим заниматься.
Один проще, но несколько курсовиков уже вопрос. Опять же fun. Ну и другие студенты которые будут использовать это скриптик ему нальют (спасибо скажут).

А вообще способ предполагает что преподаватель сам знаком с системами контроля версий и собирается с этим возится. А между тем, существуют преподаватели которые в код и не смотрят, или смотрят но лишь для того чтобы проверить что он есть :) Не раз были случаи когда одна лаба сдавалась всей подгруппой причемм переделка заключалась только в изменении графического интерфейса (на делфи дело было, перекорежить интерфейс дело 2 минут). Ну и пресловутые случаи когда ответ который выдает программа — констранта, вводимые данные тоже, а в код смотреть не стоит, потому что там только операции ввода-вывода. И прокатывало. Так что этот способ прокатит только с продвинутыми преподавателями которым не наплевать, а такие и так поймут, сам ты делал или тупо скопипастил, достаточно задать пару узкоспецифических вопросов.
Хз, хз… Я-бы не стал ни со скриптом возиться на адекватных лабах ни сокурсников раздолбаев спонсировать.

Это отдельная, долгая и очень грустная история :(
Это может быть и так, но я пока ещё студент и хорошо знаю своих одногруппников. Покрайней мере они поголовно не знают, когда у нас сделать самому проще, чем списать. Для этого тоже подумать надо :)
UFO just landed and posted this here
Разговор не про оффлайн, а про то, что проект делается в два этапа.
1. Создание нового проекта и дай бог несколько строк кода.
2. ночь дедлайна — весь оставшийся код
UFO just landed and posted this here
Я не спорю, да, сценарий, описанный в топике вполне рабочий и имеет право на существование, вот только большой процент студентов будет писать по схеме, что я описал комментов выше, и преподавателю придётся опять же полагаться на свою память. Таким образом (ИМХО, разумеется) — овчинка выделки не стоит
В некоторых случаях можно делить задачу на более мелкие, и для каждой устанавливать свой дедлайн. Но это половинчатое решение, у него куча недостатков.
От сессии до сессии живут студенты весело (с) Народное
А вот уже на сессии повеселимся вместе мы :-)
Нормально у всех с интернетами. Во всяком случае, в классе он всегда есть.
Так в том-то и фишка. Надо смотреть не на конечный результат, полученный студентом, а на историю его работы над этим результатом. Если он взял чужой готовый исходник, отрефакторил автоматом, и выложил в свой репозиторий, то это будет выглядеть как один большой коммит — огромный файл за раз, без описания промежуточных шагов. Такое решение можно не принимать. Потому что даже если пришёл дедлайн, если студент решает задачу сам, то решает он её по каким-то шагам, завершение которых можно отмечать commit'ом с коментарием.

А рефакторить чужую историю целиком, мелкими шажками — это такая головная боль, что проще, кажется, написать с нуля всё.
Когда кодил, я, бывало, сохранялся даже только по завершению проекта и даже после нескольких отлаживаний и компиляций.
Да, да, проекты были не ахти какие, но сам факт.
UFO just landed and posted this here
Вы плохо знаете студентов=))
Писать программу — это надо думать, строить алгоритмы. Для некоторых, как показывает практика, это непосильная задача.
Поменять названия переменных и сделать несколько раз коммит — намного проще.
Тык. Чтобы правдоподобно выглядело нужно будет коммиты по небольшим кусочкам делать. И при этом с вменяемыми комментариями, а не просто: 'добавил 10 строк' кода. Даже если будет написано: 'оптимизировал мат-модель' и по смыслу будет некий кусок патча подходить — это уже кое-что. Даже если этот кусок просто скопипастили и переменные переименовали. Хоть сам студент видеть будет, что вот код так-то поменялся, и это оптимизация.
Ну так это у вас курс должен называться «Пользование системами контроля версий». Ибо иначе ничем нельзя обосновать шаг «не принимать большой кусок кода», слишком нацистски это выглядит. Ну или просто это будет заставлять делать бездумные коммиты «чтобы было».
По вашей логике мой вводный предмет по программированию «Алгоритмы и структуры данных» требовалось преименовать в «Построение блок-схем».
У нас была немного другая система: когда преподаватель понимал, что отчёт чужой,- он гонял студента по исходникам: «Что тут написано?.. а что тут происходит?». Результат, примерно, тот же достигается;)
Да я тоже не понимаю зачем городить такие сложности — описанный вами вариант куда эффективней

А вариант с системами контроля версий идеально бы вписался над групповыми работами (команды по 2-3 студента) — там вот действительно трудно понять вклад каждого в работу
Ну тут тоже надо понимать. Я в свое время был в команде с двумя девушками. Естественно писал все сам. По листинг делил и раздавал, с комментариями и пояснениями. Даже разным стилем и отступами оформлял
У нас при сдаче просили внести небольшие изменения в код. Если человек писал сам, то и изменения вносил легко и сразу. А если заказывал/списывал — приходилось обращаться к автору, а препод принимал раз в неделю. Несколько человек из группы так и вылетели, не уложившись в допсу :)
Хм… Допустим банальный копипаст побежден.
У нас в группе часто практиковалась такая практика: Я делаю Сереже и Лоре курсовик по Java SE + Swing, а они мне денег ТРы по мат. анализу, например.

Как бы оформить код в разных стилях, с разной логикой, несколькими ляпами, соответствующими уровню человека(ну и сказать ему о них, т.к. препод придерется а он такой раз и решит продемонстрировав, что код его) и закоммитить в git все это дело с внятными комментариями не проблема совершенно.

Что делать? (:

P.S. Скажите мне, как преподаватель студенту: а оно Вам вообще надо?
Ну я к тому, что если кто-то не хочет учиться, а хочет диплом, все равно в конце концов он его получит. Ну поставите вы ему неут, он пойдет напрямую в деканат вручит по 12 тыс.(может сейчас больше, пока в академке, не в курсе нынешних расценок) за дисциплину и все. Никаких проблем.
Быть может проще сконцетрировать внимание на тех, кто хочет учиться и работать с ними, а остальным выдать удовл. и отправить на йух?
насчет — «если кто-то не хочет учиться, а хочет диплом, все равно в конце концов он его получит» — вот именно это и неправильно, если человек не хочет учиться, то получить он должен не диплом, а справку о прослушивании курса лекций. Иначе диплом из документа подтверждающего определенный уровень знаний превращается в бесполезную разноцветную бумажку.
Все же любят халяву, как не списать…
дурачок, жизнь свою с кого будешь списывать?
Цитаты:
Юноше, обдумывающему житье, решаюшему — сделать бы жизнь с кого, скажу не задумываясь: — Делай ее с товарища Дзержинского. (с) В.В.Маяковский.
Юноше, обдумывающему житье, Делать жизнь по-каковски? Скажу — главное. Не закончить ее. Как горлопан Маяковский! (с) М.Ардов
Вы пробовали когда-нибудь заставить разработчиков нормально использовать системы контроля версий? Не просто группу единомышленников, которые уже привыкли мыслить на одной волне и с полуслова друг друга понимают, а реальный разношерстный коллектив из допустим 10 человек? Чтобы не забывали коммитить, чтобы давали нормальные комментарии к коммиту, чтобы не коммитили неработающий код, в конце концов. Попробуйте, Вам понравится. А ведь это люди, которые всегда готовы рассказать, как нужны этому миру такие системы и как они полезны для них в повседневной работе… Для студентов же это будет очередной хомут на шее, который будет только мешать им делать задание, и отношение будет соответствующее.
Э… как бы да, я пробовал. Если программисты нормальные — они без проблем пользуются системой контроля версий. А как же иначе вдесятером над одним проектом работать?! А на счет хомута на шее — так а что, необходимость делать титулки для курсовиков или там рамки в чертежах — это более нужные хомуты? А они есть, тем не менее.

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

> Да и вообще как можно называть хомутом обучение тому, что любому
> студенту-программисту гарантировано понадобиться в будущем, в
> реальной работе?
Спросите лучше у студентов :)
UFO just landed and posted this here
Практически рассизм и приписывание целому слою общества ярлыков -)))))))
UFO just landed and posted this here
Списывают не только такие студенты
А при чём тут 10 человек? 1 задачка, 1 студент и 1 репозиторий :) Как бы сказал Морфеус, здесь видно предназначение :) А насчёт хомута… Тык эта. Для нормальных студентов обучение не является хомутом, а требования преподавателя — это часть процесса обучения. Вы ж не будете спроить с тем, что умение работать с системой контроля версий полезно, и требовать от студента ей пользоваться — это вполне рациональное требование. А для ненормальных студентов и само по себе задание является хомутом.
никто не заставляет их комитить в 1 репозитарий, у каждого свой. мороки от этого 0, только польза: научаться работать с такими системами + если вдруг заснут на бекспейсе перед экзаменом, то смогут восстановить что нужно.
Да. Иначе это негодный разработчик. Ни на что вообще — за ним даже косяки не поправить.
Во все времена студенты находили лазейки как списать, скопировать, даже у самых жестоких преподавателей, не думаю что эта система защитит от копипаста
Любая система защиты хорошо работает, пока не становится известно как она работает) Когда имеется алгоритм защиты — найти дыры элементарно.
Вообще-то сейчас стандартным требованиям к системам защиты является публикация алгоритма защиты, чтобы эксперты пообсуждали и вынесли свой вердикт о её надёжности. Вон, про RSA всё известно, дырки, однако, пока не найдены.
контролю версий до алгоритма шифрования еще расти и расти.
Почему это? В том же git или monotone на полную катушку криптография используется.
Могу ошибаться, но речь о том что шифрование и защита от списывания немного разные вещи.

Если принять в рассмотрение принцип Керкгоффса, то необходимо доказать математически, что данная система с контролем версий является абсолютно надежной.

Если же рассматривать реальную ситуацию, то имеем классическую систему развития брони и меча. Более прочная броня, рождает более острый меч. Причем в реальном мире знание оружия и брони противника дает много бонусов.
Вы фундаментально не правы.
ru.wikipedia.org/wiki/Принцип_Керкгоффса:
«Другими словами, при оценке надёжности шифрования необходимо предполагать, что противник знает об используемой системе шифрования всё, кроме применяемых ключей.»
Всё это хорошо, когда у студента есть свободный доступ в интернет.
UFO just landed and posted this here
Не увидел ваше сообщение сначала. Тогда такой случай возможен.
Но, думаю, загвоздка будет в том, что бы выбить в Университете доступ к интернету для всяких непонятных обычным людям вещей=\
UFO just landed and posted this here
Всё зависит от руководства. Для того, что бы курсы по разработке на 1С провести друг больше полугода пробивал.

А на счёт нетбуков: представьте, что вы студент из Рязани. Вам нужно за общежитие платить, на одежду и еду деньги заработать. Некоторым не до нетбуков.
UFO just landed and posted this here
у меня нет никакого нетбука)) да и макдаков у нас в городе нет ))

Хотя топикстартера поддерживаю, идея интересная.
Выбить у руководства профильного ВУЗа доступ только до github.org (web-интерфейс и собственно протокол git) или любого другого выбранного преподавателем репозитория системы контроля версий, думаю, будет несложно.
Вы знаете ВУЗы, в которых готовят программистов и в которых нет доступа к интернету? Сейчас, в 2009-том году?
У людей, живущих в студенческих общежитиях с ним порой очень туго;)
А при чём здесь общежития? Для выполнения таких заданий учебным планом выделяется время в компьютерных классах ВУЗа.
Не продуктивно работается в компьютерных классах: то окружение под себя настроишь, то отвлекут, то ещё что-нибудь, а тут и конец пары… Да и время на написание прогаммы для каждого своё нужно: один за час сделает, другому несколько дней нужно.
Ага. И на лекции непродуктивно ходится. У одного лектора темп речи не такой, у другого — дикция, сосед сопит над ухом, соседка многообещающе подмигивает… :) Что ж делать — мир несовершенен…
Кроме того, предлагается ведь гит. Комитьте всю неделю в локальный репозиторий, а в компьютерном классе засинхронизируйте, делов-то. Раз уж ищите причину не работать — найдите какую получше. Про заболел свинкой, например…
А все студенты, прям, так горят желанием поработать.
И всегда будет виноват гиковатый преподаватель.
Говорю про личный опыт (мой и еще 100+ студентов с потока).
В компьютерном классе можно только экстренно подправить программу перед сдачей или продемонстрировать ее преподавателю, чтобы задать вопросы или сдать. За 5 лет обучения не помню ни одного случая, чтобы лабораторная была написана во время занятий (списана или подправлена чужая — это да).
А вот интернет хоть и был, но доступ студентам был закрыт (за исключением занятий по сетевым технологиям).
Говорю про личный опыт. Мой и ищё 100+ студентов с потока. Помноженое на несколько лет. У нас на потоке у меня был самопальный компьютер, плюс ещё пара-тройка у народа — дороги тогда они были. И ничего. Как-то всё успевали на общественных. Странно? Да ничего странного — просто брали и делали. А не искали липовые бредовые отмазки.
Во-первых, я не ищу отмазку, а констатирую факт. Во-вторых, я где-то сказал, что мы не делали? Речь о том, что нормальную лабораторную невозможно сделать за отведенное время в компьютерном классе и отсутствие интернета в этих классах — далеко не редкость.

Хотелось бы увидеть пример ваших заданий. Что-то вроде «написать программу, вычисляющую факториал»?
Ну вообще обычно брали задачи с собой домой.
Там без компьютера рисовали схему алгоритмов и примерный листинг. В ВЦ оставалось только придти и вбить. Потом сидеть отлаживать.
Ага, на перфокарты.
И потом каждый запуск программы для отладки — одни сутки.
Добро пожаловать в начало восьмидесятых.
И в чём состоит факт? В том, что всегда было возможно и только для нынешнего поколения студентов стало вдруг невозможно? Может быть это и факт, но факт ни как не в пользу этих самых недостудентов — ленивых и ищущих причины, лишь бы ничего не делать.
Это вы ещё перфокарты не застали :). Когда задания отдаёшь на расчёт сегодня, а результат получаешь в виде распечатки с ошибками — завтра :).
А задания… задания разные были… У вас-то ваши «невозможные» — это какие? Слабать на пехапе быдлосайт?
Макропроцессор, к примеру=)
Э-э-э… Вы не шутите? Я уже приготовился к чему-то действительно большому и сложному… Мы в одном только курсе компиляторов писали по два-три компилятора (с разными методами разбора). Примитивных, конечно, но не думаю, что примитивнее макропроцессора. Были задачки и посложнее. И это не совсем программистская специальность, приматы больше математики, чем программисты.
Не сказал бы, что макропроцессор намного примитивнее компилятора.
Да и кто сказал, что на весь семестр был только один макропроцессор?
Я и не говорю, что примитивнее. Я говорю, что сравнимо по сложности. И ничего, все почему-то справлялись…
Справляться-то справлялись, но было ли это удобно?
Речь ведь шла о невозможности? :)
Удобно? Ну, а чему бы там быть неудобному? «Окружение» под себя настраивать? Это какое? Обои на рабочем столе? Смешно. Какое ещё специфическое окружение для написания программы вроде макропроцессора? Ну, и про удобство я уже написал — мне может быть на многие лекции ходить было неудобно. Вставать, там, рано. Ехать через весь город… И что?
ЗЫ. Есть возможность писать дома или в общаге — ну пишите. Нет возможности делать это дома — эта возможность предусмотрена учебным планом и все всегда с заданиями справлялись, за исключением каких-то совсем лентяев и тупиц. Задания, как я вижу, по сложности, наши тогдашние не превосходят. Других причин, кроме нытья и соплей не вижу.
ЗЗЫ. У меня возможность работы дома была специфичная — дома стояла полуось, так что я, если делал что-то дома, приносил потом сдавать задания на экзотичной тогда яве или на совсем уж экзотичном REXX'е (когда не требовалось показать рабочий образец), чем изрядно озадачивал иногда преподавателей :).
Эх были люди в наше время,
Не то что нынешнее племя,
Богатыри! Не Вы!

Простите что влажу в ваш холивар, но в наш просвещенный век (2003-2008) у бедного второго или 3 по важности университета страны (Беларусь, Минск, БНТУ) было только по одному компьютеру на 2-3 программиста в лабораториях. Может в России все не так, рад за вас. И учитывая что на текущем занятии нужно здать лабораторную за предыдущее, что рядом сидит человек и откровенно демотивирует тебя своим безделием (а что ему делать, если комп один на двоих а экстремальное программирование штука на любителя, да и не учили нас ему), если компы еле шевелятся, дешевая клава раздолбана предыдущими поколениями студентов а интернетом даже не пахло, то как то не работается. Лучше дома в тишине и покое. Я не говорю о невозможности, сделать можно, во всяком случае большинство лаб, но в крайне некомфортной обстановке. У вашего поколения возможно не было другого выхода (не было домашних компьютеров) поэтому вы и делали все на лабораторных, но большинство современных студентов делают дома а на лабораторных сдают (ну или страдают ерундой если нечего здавать :)). Да и еще, если лабораторные которые делаются на спец приборах (физика и пр.) четко прощитаны по времени (а деватся некуда) да еще с запасом солидным, то лабораторные по программированию этим качеством не отличаются, по одному и тому же курсу лабораторная может занимать от 15 минут до 2-3 часов, и вот их уже невозможно сделать за отведенные 1.5 часа.
У нас с интернетом была вся та же фигня, но у меня еще и компьютера своего не было. И, представьте себе, все задания на ура делались в компьютерном классе. Было бы желание.
Это зависит от задания.
Для примера: обращение матрицы QR-разложением, приближение функции от двух переменных конечными элементами с графиком в изометрической проекции.

Скорее зависит от человека, не все могут сосредоточиться когда вокруг шумят.
Ну скажем так. Новосибирский государственный университет, не самый такой хреновый в этом плане в кампусе имел на 10 общежитий общий канал в два (точно не скажу, но помню такую цифру) мегабита в интернеты. И per user — максимальные 3 килобайта (достижимые лишь в 6 утра, когда все спят) и гарантированные 1 байт в секунду.

А, ещё VPN был, с конскими тарифами дороже рубля за мегабайт. В этом году наконец-то сделали анлим, на который больше ругаются, что он опять не работают, нежели пользуются =)
Ключевое в моём вопросе было указание времени — 2009 (да уж почти 2010 год). Что — и сейчас 2 Мегабита на 10 общаг? Во времена когда можно домой 10-20 Мб притянуть за 20 баксов в месяц? Тогда надо просто кому-то в руководстве шею намылить.

А вообще — в моей общаге студенты сами и сеть сделали, и вай-фай, и выделенку широкую притянули а с сетью универа просто комутацию сделали, чтобы удобнее файлы гонять. Студент — сам творец своего счастья.
Ключевые слова — дома и в общагу. В общаге собственник — универ, организация государственная. Посему и замутки будут с тендерами для провайдера и всё такое. И тарифы тоже соответствующие, интернеты универу как юрлицу продаются.

Провайдеры в радиусе пары километров есть, целых два, со вменяемыми тарифами. Только в кампус их никто не пустит. Хорошо хоть у локалок пиринг есть. Вот и получается, что в общагах выдают самое большее — полмегабита за 900 рублей в месяц, когда у общечеловеческого провайдера за эту сумму можно 4 мегабита поиметь. С большей стабильностью.

А вообще — это оффтопик слегка тут. Просто хотелось высказать, что ситуация с интернетами за пределами дефолт-сити и дефолт-сити2 может быть вполне печальной.
я знаю (правда не в 2009, но за начало 2008 я уверен), Беларусь БНТУ ФИТР, со второго курса (год этак 2004) начались проблемы с тем что раньше называлось интернетом (просто скорость была меньше диалаповской для отдельной машины), какие то кантракты у них с нашим монополистом закончились, решили менять провайдера. Вот так интернета не было года 2, а потом он был только на нескольких машинах в одной-двух лабораториях. А вот в главном корпусе он был, хотя там не программисты, там бугалтеры в основном сидят. Наверное на факультате решили что интернет программистам не нужен, вся информация есть в конспектах.

Правда не знаю как там счас, я там уже полтора года не был, может и пришло счастье.
Эта схема хороша, когда преподы нормальные. Но в основном по России уровень преподавателей вовсе не на уровне тех, что есть на Хабре.
Ладно студенты… Халяву любят все :) Есть в банковской системе такая вещь, как обучение сотрудников противодействию отмыванию доходов и финансировнию терроризма. У нас в банке это выливается в ежегодное тестирование по куче самых разных инструкций. Естественно, большей части народа это никуда не впилось, и жутко отвлекает от работы на довольно немалый срок (у меня это заняло почти полтора рабочих дня). Почти все допофисы ваяют это тестирование коллективным разумом. У меня списывает начальник и весь отдел. В этом же году меня еще и юридический отдел пугал тем, что не даст нужную мне информацию, если я им не покажу свои ответы :)
Если студент напишет такой скрипт, что он граммотно, красиво и незаметно обойдет систему контроля версий, то ему уже можно ставить зачет :)
А этот скрипт уже можно копипастить :)
Никто не отменял дополнительные вопросы, которые обычно помагают оценить коректно знания каждой студенческой единици
Тык. Хочется же облегчить этот процесс. Конечно, можно и повыспрашивать, но это достаточно много времени отнимает.
Ну всё зависит от того на сколько вы хотите себя задерживать. Один вопрос, но концептуальный для изучаемого предмета заставит студента или ответить или признать свое незнание.
Никогда не нужно ждать пока студент выдумает ответ на вопрос. :)
Оу… IMHO, как раз способность выдумать ответ очень ценна. Выучить-то многие могут, а вот сообразить что к чему — нет.
Солидарен по поводу того что способность сообразить это хорошо, я имел в виду тех студентов которые выдумывают свои новые теории в качестве ответа)) Как в анекдоте про блох))
Нам препод по терверу рассказал историю о том, как наш же замдекана когда-то сдавал функан Колмогорову в МГУ. В билете 2 вопроса, один он знает, а другой нет. Ну, на тот, который знает, он все как следует расписал, подходит, начинает отвечать. Когда дошло дело до второго вопроса, он наугад сказал: «Я считаю, что это можно доказать через теорему ...»(ну, какую-то). Колмогоров задумался, несколько минут молчал, а потом сказал: «Ммм… действительно, и так можно».
ну если история действительно правдивая, то Ваш замдекана достоен уважения!
Тоже об этом задумывался, но пока наш препод по терверу не дает повода ему не доверять =)
Как то нужно было сдать последнюю лабу чтобы успеть допустится до сессии, и задали мне такой каверзный вопрос, долго я сидел над ним выдумывая свою теорию (преподаватель пока другими занимался). Ответ известен но нужно объяснить почему он такой, а в теме я откровенно плаваю, интернета нет. Пока выдумывал теорию, разобрался во всей полускопипащеной лабе и в теме тоже, причем глубоко так. Так что выдумманная теория, если она правильная дорогого стоит. Как и преподаватель который может найти такой вопрос.
Большинство преподавателей не слыхивало про гитхаб вообще. И про системы контроля версий. А те кто знают и умеют это использовать, скорее всего нашли лучшее применеие своему времени, чем палить студентов на списывании.
Как-то на баше я вычитал цитату о студенте, который пришел сдавать, на сколько я помню право, а преподаватель, практикующий юрист, просто поставила ту оценку, которую хотел студент. На его вопрос «почему» она ответила просто: «да потому, что я как специалист буду цениться всегда чем те, специалисты-студенты». Это, конечно не точная цитата, но смысл, думаю, понятен.
Да, студенты любят схитрить и списать/не сделать и получить зачет и т.д. Но Вы задумайтесь, а какие из них потом специалисты получаться? Работодатель один-два раза обожжется на таком «специалисте» и потом все равно придет к Вам. Если работодатель умный и ценит свое время/деньги, конечно :)
Ы. А у меня нет такой задачи, чтобы потом ко мне всё равно пришли. У меня задача научить студентов хоть чему-то, раз уж мне приходится преподавать. Оценка тут совсем не важна.
Если студент хочет и ему это интересно — он сам все сделает, он не будет искать возможности списать :)
А заодно ещё и контролю версий научится. Хорошо же. Тем более, что git или monotone — очень простые в обращении штуки. Ну… На том уровне, который предполагается в этих учебных сценариях.
Если студент именно такой, то высшее образование ему просто для корочки. Тем более в it отрасли. 90% учебного курса не сильно пригодятся в жизни/уже известны разбирающемуся человеку. Остальные 10% безусловно интересны и полезны, но по соотношению знания/время на институт крайне не велики

UFO just landed and posted this here
Как бы, тут о сроках речь совсем не идёт. Это раз. Во-вторых, речь идёт о практических заданиях. Бывают студенты, которые могут взять чужой код и объяснить то, как он работтает. Это не плохое умение, но всё же хочется выше оценивать именно тех студентов, которые могут самостоятельно код составить. А как их определять? Мне вот принесли сегодня одну задачку сдавать. Три человека с совершенно одинаковым кодом. И я их спрашиваю, спрашиваю — вроде всё складно отвечают на тему этой задачки, понимают, что в ней происходит. Но кто из них автор, спрашивается? Кому дополнительный плюсик ставить?
UFO just landed and posted this here
Код похож — это вероятно. Но похожесть история коммитов, проб и ошибок? Это гораздо менее вероятно. Понятно, что тут панацеи нет. Просто контроль версий предлагается, как один из инструментов, снижающих нагрузку на преподавателя.

Распросы же не всегда помогают выявить именно умение писать программы. А нужно выявить же именно умеющих писать программы студентов, а не умеющих объсянять. Вот я тоже могу объяснить, например, как работает алгоритм Евклида. Но вот не факт, что я сам бы додумался до такого. Я по своим навыкам и умениям Евклиду, естественно, совсем не равен. Хотя, наверное, объяснить этот алгоритм способен лучше Евклида. Так же и с программами. Я вот встречался уже с ситуациями, когда человек, который программу писал объяснял её работу хуже, чем тот, кто скопипастил. Хотя, может, тот, кто скопипастил потратил много сил на то, чтобы потестировать код. А, может, просто опоил чаем :) автора, чтобы тот расслабился и всё ему рассказал. Я ж не знаю историю. Как тут рассудить?
UFO just landed and posted this here
Тык… Всё прекрасно, конечно. Я бы с удовольствием общался бы по каждой задачке со студентами… Но. Есть же реалии нашей родной системы образования. Во-первых, это нагрузка: я подрабатываю в университете, на полставки, при этом у меня нагрузка точно такая же, как в буржуйском университете у штатного профессора :) есть такая особенность у современной российской системы образования. По душам, по каждой задаче общаться с каждым студентом, чьи навыки вызывают сомнения — это просто нереально. Потому что у меня есть ещё основная работа, есть ещё свои исследования и т.д.

Поэтому мне просто мне хочется процесс выяснения того, кто более или менее сам работу писал, а кто копипастил с мелкими изменениями упроситить. И всё. А задача выяснять, кто там глубоко предмет знает, а кто не очень — это уже совсем другая задача. И вот кстати опять же. Если человек может сходу внести корректировки в алгоритм — это замечательно, это в пользу него говорит. Но есть и достаточно 'тормозные' студенты. Которым надо время для размышлений. Или вот ещё есть девочки, которым надо сначала 100 раз всё проверить, потому что они не особо уверены в навыках своих. Люди разные.

Вот. Тут не всё так просто, как кажется.
UFO just landed and posted this here
//Просто придираюсь
В школе эти медалисты наверняка учились у одного препожавателя и читали похожие книги по теме. Методика обучения сильно влияет на мышление.
UFO just landed and posted this here
преподаватель попросила решать задачи не по методике, которую начитывала

Коллега попросил дышать меньше, мотому что в его воздушном баллоне не осталось воздуха.
Очень трудно отказаться от знаний, которые в тебе уже есть.
UFO just landed and posted this here
>Если принесли одинаковый код
Эту ситуацию и предполагается отслеживать. Настолько ли хороша ваша память, чтобы запомнить код сотни студентов и распознать даже простейший копи-паст, не говоря о банальном рефакторинге-замене переменных, который делается за 1 клик и/или смене стандарта форматирования текста?
А вот когда факт копирования выявлен можно уже и спрашивать с пристрастием. Авторское право здесь не при чём. «Уникальных» авторов нет большого смысла подвергать изощрённой проверке.
UFO just landed and posted this here
На самом деле похожие программы опознаются на раз. По 1-2 ключевым точкам кода. Просто у сдающих первыми код просматриваются внимательно, а у всех остальных просматриваются только проблемные места обнаруженные у первых сдающих.
Да, когда я хотел стать преподавателем… думал тоже на практических занятиях внедрю и систему контроля версий, и continues integration и все задачи будут в стиле реализовать вот такой интерфейс чтоб тесты проходили :)
Как делали преподаватели у нас:
1. В задании есть несколько различных параметров (возможно, что 5 и более). У каждого параметра может быть 2 и более значений.
2. Номер в журнале и текущий год определяют свой набор параметров для каждого студента.

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

Например, в лабораторной работе, где надо было написать программу, выполняющую моделирование работы дисковой подсистемы, один из параметров — стратегия обслуживания (SSTF, SCAN, C-SCAN, FSCAN, N-STEP, стратегия Эшенбаха и др.). Согласитесь, что готовые работы будут отличаться очень сильно.
Ни наю :( У меня, наверное, фантазии не хватает… С дисками, конечно, хороший пример. Но это всего пять разных задачек. А в группе 20 студентов. И все должны чего-нибудь дисковое помоделировать. И что делать?
Пока студент думает, что знания нужны преподавателю (а не ему — студенту) — он будет списывать.
И ситуация может измениться только если будет:
1) за образование будет платить не студент, а работодатель (возможно опосредовано, через государство, банки или ещё как-то). Мысль проста: за лесозаготовки должен платить мебельный комбинат; если за них будет платить сам лес — ничего пригодного для производства мебели не заготовится.
2) преподаватель должен понимать, что его задача не зачморить (не доказать, что студент чего-то не знает), а научить (доказать студенту, что тот может узнать что-то новое, достигнуть большего, стать сильнее, увереннее).

(мой педстаж 8 лет; практикумы семинары; экзамены (в том числе и вступительные); МГУ им. Ломоносова)
Ну тык… Ждать, когда ситуация изменится — не продуктивно. А какого-то уровня справедливости в оценке студентов тоже достигать хочется. Тем более, что это и для привлечения студентов и работодателей к ВУЗ'у важно. Если мы ставим человеку 5 за предмет, то работодатель должен быть уверен, что это заслуженная 5. Этим и престиж ВУЗ'а поднимается. А если отлично в вузе ставится всем подряд, то цена этой оценки совсем не велика, и никто не будет смотреть с уважением на отличника, выпущенного из такого вуза.
В свое время, когда я сам был студентом — преподаватель поручил мне с товарищем написать программу, которая могла бы определить, что работа студента (программа) содрана, откуда содрана и приблизительно оценить степень похожести. И мы написали такую программу для поиска плагиата в исходных текстах на C++. Кратко алгоритм работы такой — исходники токенизируются, при этом выбрасываются все комментарии, остаются ключевые слова, переменные (в виде меток — «тут была переменная», не важно ее имя). Потом этот набор токенов одной программы сравнивали с набором токенов другой программы по алгоритму «Karp-Rabin Matching and Greedy String Tiling». Особенность этого алгоритма в том, что он находит соответствие между двумя последовательностями даже если элементы в них переставлены местами. Таким образом просто перемешав функции в программе нельзя было скрыть плагиат.
Ну… Это просто обходится. Можно понаставить лишних скобочек. Или вместо ++ писать += 1. Или if вместо switch. И т.д. Хотя… С другой стороны, если студент переписал чужой switch в терминах своего if — это уже хорошо.
Согласен, но мы ведь говорим про бездумное списывание )
Максимум на что хватало студентов тогда — поиском и заменой поменять имена переменных, и попереставлять функции — что определялось нашей программой.
Я когда-то, списывая, полностью переписывал чужой алгоритм «своей рукой». Конечно же, при этом слабо понимал математическую (более важную) часть. Сдал :)
Во. А чтобы переписывание было вдумчивым как раз и нужны 'вменяемые аннотации'.
У нас такая применяется. Правда, заливать можно сколько угодно кода, не обязательно за одну задачку несколько коммитов делать. Я вот с 10 класса себе поставил условие, что если что-то делаю, то делаю сам, и не списываю с тех пор, но у меня лично были бы проблемы с вашим предметом =) Вот уже семестр заканчивается, у нас была целая куча разных задачек по ООП и XNA, но я еще ни одной из них не сделал в несколько заходов — все делаю за один раз=) Единственное исключение — курсовая работа по XNA — ее мы делаем вдвоем с однокурсником и она для нас слишком сложна, чтоб за один раз выполнить.
У меня в группе из 30 человек программистами работают 5, остальные кто где. Я делал лабы половине группы бесплатно. Если бы вы обязали сдавать лабы по сортировке или компьютерной графике через github вы бы просто усложнили мне жизнь. А также увеличили доходы тех, кто зарабатывает на лабах, курсовых, дипломах.
Вы — жертва своей доброты =)
Да, но не только. Они мне помогали по гуманитарным предметам. Плюс элементы социализации, общения с противоположным полом, так что всё было сбалансировано.
всё это конечно здорово, но когда это преподаватель внимательно читал код?
ведь тогда прийдётся читать и просматривать не один файл, а несколько десятков diff'ов разной степени работоспособности
сколько помню свои уроки информатики, уже ближе к середине семестра преподаватель только бегло пролистывал код на предмет идентичности с кодом соседа, на другое просто не хватает времени
Мне кажется решение какое-то надуманное.
Ну первый поток студентов может и испугается. Второй же уже будет спокойно докидывать код по шаблону. Пять минут плюю в потолок, потом коммит.

Человек который «готов поделиться» спокойно может комитить в несколько проектов, лишь слегка меняя код.

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

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

но такая система, имхо, почти бессмысленна для той же физики/математики(или чего еще хуже — для болтологических предметов) на начальных курсах.
а ведь на первых курсах люди списывают больше и чаще, чем на последних.

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

Да ну :) У нас все наоборот было. Курсе так на шестом какая-нибудь философия очередная, попробуй не спиши :)
Спасибо за статью.

В общем интересно. Но тут практическая польза скорее от получения навыков пользования репозиторием. Другое дело если студент скажет что у него нет доступа в интернет, я что, принимать у него не должен проект? И что то подсказывает мне, что у студентов весь интернет перестанет работать… Хитрые ведь, бестии. :-))
Тык. Git он тем и хорош, что можно хоть на дискетке таскать. Интернет не обязателен, в общем-то. Просто штуки вроде github'а позволяют эти git-репозитории простматривать в удобном виде.
Алгоритм обхода прост — сливаем несколько ревизий проекта и коммитим их последовательно через различные промежутки времени.
Ну. И если вы ничего в этих ревизиях не меняли, то git log -p выдаст точно такой же patch, как у Васи Пупкина, который автор программы.
Аналогичную проблему, только на уровне курсовых работ и ОДЗ по отвлеченной тематике решал через алгоритм шинглов. Сейчас база разрослась до 2,8кк строк выборка похожих документов стала занимать порядка 4 секунд. Сейчас потихоньку ищу решение побыстрее.
Нужно не со списыванием бороться, а с такой системой образования, в котором списывание имеет какой-то смысл.
Нужно делать так, что бы было интересно самому сделать, а не списать. И дело не только в системе образование, а и в методиках преподавания.
github стоит денег. Firewall Edition — дорого. Приватные репозитории на основном — тоже деньги. Или выкладывать в публичный, чтобы еще весь мир списывал.
Launchpad — опенсорс, да и bzr студентам проще понять будет, чем читать 26 страниц о git log ;)
нда…
о чем вы, в нынешних технических универах большинство студентов не то что системами котроля версий не смогут пользоваться, но и программу скопипастить не сумеют, потому что учатся для галочки и за деньги. А вы им про чекауты и комиты. Я закончил год назад универ, сказать вам сколько человек у меня в группе программирование сами сдавали, человека 3-4, в том числе и я. Думаю того, кто не хочет ни в какую учится не стоит и нагибать пытаться, себе дороже, да и смысла нет
Преподователь технического вуза.
У меня как раз сей час студенты сдают курсовой проект. Но у нас подобная система не сработает, потому что все рассчитывают турбину, но по одним и тем же формулам. Применяются одни и те же законы. Так что записки получаются похожу, только цифры разные.
И вот тут главное не подставил он цифры в формулы, а понял ли что значат эти цифры. Поэтому я перед тем как подписать записку задаю ряд вопросов. Ответил понимает, что написано в записке, значит сам дела, а не просто циферки перебил.
И даю небольший спец задания по сбору информации из ряда статей и приведения их в определенную форму с собственными выводами, работа у них получается на страницу. И сразу видно сам делал, или списал из статьи. Для проверки много времени не требуется.
У нас по одному предмету очень интересная система сдачи дз. Можно принести даже неправильное дз, однако придётся объяснять в чём ошибка, и на что эта ошибка повлияет в дальнейшем. К примеру, в дз оптимумы двух величин, которые должны совпадать в теории, не совпадают. Надо это объяснить. При этом, преподавателю не важно списано ли дз. Однако, после успешной защиты, студент может всё рассказать и показать в этом самом задании.
В нас негласное правило: сдал — отдай «сообществу» на растерзание. Как они там уже будут разбираться — не столь важно. Да и преподаватели видя по несколько раз на день одинаковые программы могут попытаться отследить источник благодати и премировать его на сессию например автоматом на экзамене.
Sign up to leave a comment.

Articles

Change theme settings