На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! В разделе обсуждаются следующие темы:
1) Процесс разработки программного обеспечения.
2) Определение требований к программному обеспечению.
3) Составные части и процесс проектирования (см. Шаблоны проектирования).
4) Документирование программного продукта(проекта).
5) Руководство разработкой программного обеспечения.
6) Проектирование пользовательского интерфейса.
7) Контроль версий проекта (см. Управление версиями в Subversion, Стратегии использования svn).
Модераторы: ElcnU
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Подлинность программы
    Добрый день!

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

    Сразу говорю, 300 студентов, переглядеть по 12 лабораторок от каждого я физически не могу.

    С уважением.
      Цитата Math teacher @
      300 студентов, переглядеть по 12 лабораторок от каждого я физически не могу.

      а вы и не проверяйте :crazy:
        А весь код построчно сверять не надо, если передирают, это будет видно по названию функций/переменных/элементов VCL.

        Добавлено
        Цитата Math teacher @
        Поэтому надо придумать метод, как сравнивать исходники на подлинность.

        Ммм, странный метод, возможна ситуация при которой два разных человека могут рещить задачу при помощи идентичного алгоритма ;)
        Сообщение отредактировано: Mr. Gonarh -
          тут ИМХО только прогу натравить на всю кучу файлов которая ищет дубли файлов.... :)

          Добавлено
          Цитата Mr. Gonarh @
          два разных человека могут рещить задачу при помощи идентичного алгоритма

          :yes: и такое может быть
            Короче нужен комплексный подход :D
              Mr. Gonarh, Besha, очевидно что вы плохие студенты. Один алгоритм запрограммировать идентично не полуится, это факт. Пока что кроме МД5 добавил подсчёт различных грамматических структур в коде.
                Цитата Math teacher @
                Mr. Gonarh, Besha, очевидно что вы плохие студенты. Один алгоритм запрограммировать идентично не полуится, это факт.

                Очевидно вы плохой тичер. Любая полная задача имеет ограниченное количество алгоритмов решения. Если вы тичер, вам ли этого не знать? Разница будет лишь в названиях переменных/функций. Если в одной группе достаточное количество учащихся, может такое быть, что двое решат задачу примерно одинаково
                Сообщение отредактировано: Mr. Gonarh -
                  Mr. Gonarh, если нет предложений по теме, то проходите мимо. Задачу решить
                  Цитата Mr. Gonarh @
                  примерно одинаково

                  можно, но:
                  1)Задачи у нас не совсем простые. Элементарная - это посчитать число пи методом монте карло. Реальная же задача будет занимать около 1000 строк кода.
                  2) Я не указываю язык программирования, как минимум в этом - уже отличиеж
                  3) В тех же плюсах можно использовать фишки от стл, а можно пиать велосипеды. Можно написать на плюсах процедурный код.

                  Именно поэтому, вероятность того, что вы описали - ничтожно мала, и такие случаи легко проверить вручную.
                    Была такая теория раньше - теория схем программ. Конечно, теория и сейчас осталась, но что-то мне не попадается ее использование в курсах лекций российских ВУЗов. Так вот...

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

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

                    Дело за малым :)

                    Я бы посоветовал:
                    1. Если все это интересно, напишите, я попробую порыться в архивах и найти эл. вариант книжки по схематологии (Котов, Сабельфельд авторы). Но вообще-то все эта тема не один десяток хороших, добротных кандиадтских и докторских в области теоретической информатики.
                    2. Оценить свои трудозатраты и время. Задача ой какая нетривиальная. Все остальные костыли и прочие синтаксические разборы и похожести - утопия, которая перестает работать при смене всех имен и идентификаторов, замены рекурсии циклом и т.п.
                    3. 300 студентов, конечно, многовато! Но придумайте для них способ сдачи с объяснением на одну страничку в усной или письменной форме. Или перейдите на какую-то систему автоматического тестирования по заданной теме. Две минуты достаточно, чтобы понять, мямлит он или вызубрил объяснение или дейсвтительно все понимает. У меня студентов далеко не 300, но такое работает - хоть что-то запоминается в процессе сдачи.
                    Сообщение отредактировано: grgdvo -
                      Цитата grgdvo @
                      Оценить свои трудозатраты и время

                      Так я это всё студентам отдам на проработку ;)
                      Цитата grgdvo @
                      утопия, которая перестает работать при смене всех имен и идентификаторов, замены рекурсии циклом и т.п.

                      Согласен, что можно заменить цикл while на for и т.д. Но, откровнно говоря, такое делать мало кто будет, так как максимум на что способны "студенты" - это переменные переименовать.
                      Цитата grgdvo @
                      Если все это интересно, напишите, я попробую порыться в архивах и найти эл. вариант книжки по схематологии (Котов, Сабельфельд авторы). Но вообще-то все эта тема не один десяток хороших, добротных кандиадтских и докторских в области теоретической информатики.

                      А вот за это спасибо, гляну!
                        Цитата Math teacher @
                        А вот за это спасибо, гляну!

                        Не уверен, что правилами форума приветствуются ссылки на файлобменники, но книжка легко ищется через гугль:
                        ссылка
                          Цитата Mr. Gonarh @
                          Ммм, странный метод, возможна ситуация при которой два разных человека могут рещить задачу при помощи идентичного алгоритма ;)

                          Алгоритм - да, реализация - нет.
                          По существующим (и, кстати, юридически подтвержденным) нормам, совпадение реализации - это плагиат. Без вариантов.
                            Цитата andriano @
                            По существующим (и, кстати, юридически подтвержденным) нормам, совпадение реализации - это плагиат. Без вариантов.

                            Более того, благодаря Болонскому процессу, если заниматься во время семестра, то экзамен получается автомат (или практически автомат). Лентяям ставить четвёрки и пятёрки я не собираюсь.
                              Могу лишь предложить иметь для каждой программы словарь совпадений конструкций. Программа, совпадающая с любой другой процентов на 80, думаю будет содрана. Если хотите, могу попробовать реализовать такой алгоритм и проверить "в деле" так сказать. Просто использовать нейронные сети - слишком муторно
                                KDiff 3 поможет
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0379 ]   [ 15 queries used ]   [ Generated: 29.03.24, 11:41 GMT ]