Detecção de plágio

 

Projeto final: detecção de plágio

Objetivo: [editar]

o projeto final visa continuar desenvolvendo suas habilidades na resolução de problemas computacionais mas com um viés um pouco diferente. Dessa vez você vai ajudar a identificar e definir o problema antes de desenvolver a solução.

Apresentação do problema: "Quem cola, não passa na escola." [editar]

Ok, talvez você tenha escutado essa frase antes de uma forma diferente. Mas de fato a "cola" (ou plágio) de trabalhos escolares tem se tornado um problema ainda maior com o avanço tecnológico. Nesse trabalho vamos desenvolver um programa capaz de identificar possíveis casos de cola em exercícios programa semelhantes aos que você já fez em disciplinas como MAC0110, ou MAC0115, ou MAC0122, ou outra disciplina de computação.

Uma forma básica de colar é entregar exatamente o mesmo arquivo, inclusive com o mesmo nome e número USP de outra pessoa. Uma forma um pouco mais sofisticada é entregar o mesmo arquivo, mas alterando o nome e o número USP.

Nessa primeira fase, antes de tentar resolver o problema, desejamos coletar mais informações para entendê-lo melhor. Para isso vamos fazer um brainstorm para que todos possam contribuir na descrição de outras formas ainda mais sofisticadas de "mascarar" o programa para que ele não se pareça mais com o programa original.

O que você deve fazer: [editar]

Tente imaginar formas diferentes para "mascarar" um programa. Em seguida veja se essa forma já está contida na seção de comentários desse wiki e, caso ela ainda não tenha sido descrita, inclua essa nova forma. A leitura do wiki pode também inspirar você a criar outras formas ainda mais sofisticadas.

Lembre-se que, por ser um brainstorm, nenhuma ideia é trivial demais, simples demais, boba demais, complicada demais, feia, bonita, brilhante, gorda, etc. Toda ideia diferente é uma ideia bem vinda e deve ser inserida em nossa lista para posterior discussão.

Casos de plágio já descritas nos comentários (última atualização: 21:34h de 26/10) [editar]

  1. Caso básico: entrega o mesmo arquivo
  2. Mesmo arquivo com nome e NUSP diferentes
  3. Mesmo arquivo com comentários diferentes
  4. Troca o nome de variáveis (por Renata MH)
  5. Troca alguns comandos semelhantes como while por for (por Cinthia SS)
  6. Troca bloco por função (por Vitor HVL)
  7. Troca a ordem dos comandos e dos blocos (Rafael ZB)
  8. Troca as classes(ex: list por dict), mas só usar os métodos comuns entre elas (Rafael ZB)
  9. Todas as alternativas, mas utilizando como base programas de anos anteriores ou tirados da internet (Guilherme JCN)
  10. Copia apenas uma parte do código ao invés do código todo (Yuri VG)
  11. Adiciona variáveis e operações ao programa de forma a não alterar o resultado final (Yuri VG)
  12. Altera valores de indices. Exemplo de 0 a n-1 troca para 1 a n (por Eduardo GM)

Oficinas de programação [editar]

  • Oficina 1 - Definição do produto e como começar o projeto?
  • Oficina 2 - O que e como representar?
  • Oficina 3 - Como usar subsequencia comum máxima (LCS - longest common substring) para detectar similaridade?