Ir para o conteúdo principal
Paca
  • Página inicial
  • Mais
Você acessou como visitante
Acessar
Página inicial
  1. Semestres anteriores
  2. MAC0122 2017
  3. EP14
Tarefa

EP14

Condições de conclusão
Aberto: segunda-feira, 20 nov. 2017, 00:00
Vencimento: domingo, 3 dez. 2017, 23:55

Decteção de Plágio

Calculando a similaridade entre programas

Objetivo:

O objetivo do EP14 é definir e implementar uma forma de calcular a distância ou similaridade entre programas a partir da forma(s) canônica(s) desenvolvida(s) no EP13.

Descrição:

Assim como nos EPs 12 e 13, vamos nos basear em parte nos resultados das oficinas de programação realizadas em sala e discussões online.

Nos EPs 12 e 13 começamos com

  • leitura de vários arquivos;
  • teste de igualdade de dois arquivos;
  • teste de igualdade de dois programas em Python após a remoção de comentários;
  • teste de igualdade de dois programas em Python após a remoção de "brancos desnecessários";
  • teste de igualdade de dois programas em Python após a remoção de "maquiagem de variáveis";

Observe que todos esses casos procuram por igualdade entre duas formas canônicas. Essa igualdade é facilmente perdida para pequenas alterações no código, como por exemplo inclusão de instruções desnecessárias, alteração na ordem de declaração das funções e classes, e plágio de porções de código.

Agora vamos continuar o nosso caminho no sentido de detectar um grau similaridade (plagiarismo) que não seja igualdade. (um grau mais sofisticado de plágio).
Esse grau de similaridade deve ser representado por um real entre 0 e 1.0, onde 1.0 significa que a similaridade entre os programas é de 100%. Para manter a saída compatível com os EPs 12 e 13, vamos considerar que qualquer valor maior que 1.0 na matriz de saída M corresponde a 100% (por ter 100% de similaridade - igualdade - entre formas canônicas).

O EP14 acrescentará funcionalidades ao seu EP13. O seu EP14 deve:

  1. [60%] Associar a cada par de programas um número real entre 0 e 1.0 que indique o grau de similaridade entre os programas.
    Como fazer isso?
    Considere que os programas já estão em suas formas canônicas (vide EP13).
    Implemente funções ou métodos para tratar esse caso.
    Marque a similaridade na posição correspondente da matriz M.
    Compartilhe as suas dúvidas, ideias ou sugestões no fórum ou no wiki.
  2. [30%] Modifique a função main() do EP13 para incluir o cálculo de similaridade acima.
  3. [10%] Documente o seu programa de tal forma que outro programador ou monitor ou professor entenda a sua estratégia de solução.
    Programadores, monitores e professores sabem Python, assim evite comentários descrevendo o que um comando faz.
    Comentários devem dizer o que trechos de código fazem. Veja, por exemplo, as documentações de funções e comentários de MAC0110 e MAC0122. Cada função recebe algo e faz ou retorna alguma coisa.

Passo-a-passo:

  1. Apresente e discuta suas ideias e de seus colegas na seção de comentários do Wiki do Projeto Final e nas oficinas de programação.
  2. Copie o arquivo que você entregou como NUSP_EP13.py para NUSP_EP14.py.
  3. Escreva as funções e métodos auxiliares que desejar para incluir os novos casos de plágio, edite a main() e coloque comentários e docstrings.
  4. Teste o seu programa para entradas simples.
  5. Depois de funcionar para entradas simples, teste o seu programa com entradas mais reais.
  6. Entregue o seu programa.
Você acessou como visitante (Acessar)
Resumo de retenção de dados
Baixar o aplicativo móvel.
Fornecido por Moodle