<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Investigando o uso de múltiplas soluções de referência para classificar códigos usando algoritmos de similaridade</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>João Vitor Silva Oliveira</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alexandre de Andrade Barbosa</string-name>
          <email>alexandre.barbosa@arapiraca.ufal.br</email>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2017</year>
      </pub-date>
      <fpage>479</fpage>
      <lpage>489</lpage>
      <abstract>
        <p>In context of programming learning environments, many students have difficulties to understand the contents, causing a lack of performance in the discipline. This way, in many researches methodologies and tools are proposed to provide fast and effective feedback. In this investigation, was verified if the number of reference solutions have positive influence in classification of solutions. At the end of the investigation, it was possible to notice that, in a few cases, similarity algorithms provide an fair agreement with the experts, the use of a larger number of reference solutions did not constitute a significant improvement. Resumo. No contexto de ensino e aprendizagem de programação, muitos alunos têm apresentado dificuldades na compreensão dos conteúdos, o que ocasiona mau desempenho na disciplina. Visto isso, muitas pesquisas investigam metodologias e propõem ferramentas para fornecer um feedback rápido e efetivo. Nessa investigação, buscou-se identificar se a quantidade de soluções de referência adotadas influência positivamente a classificação das soluções realizadas por um classificador automático. Ao final da investigação, foi possível notar que em poucos casos o classificador automático fornece uma concordância equivalente aos especialistas, e o uso de uma maior quantidade de soluções de referência não consistiu em um ganho significativo.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introdução</title>
      <p>
        Atividades práticas de codificação são fundamentais para o aprendizado de
programação, os estudantes devem ter o hábito de solucionar exercícios e direcionarem
seus estudos à codificação [
        <xref ref-type="bibr" rid="ref1">Araujo 2013</xref>
        ], [
        <xref ref-type="bibr" rid="ref14">Paes 2013</xref>
        ]. Diversos pesquisadores tentam
desenvolver metodologias de ensino ou ferramentas para diminuir as dificuldades
presentes no ensino/aprendizagem de programação [
        <xref ref-type="bibr" rid="ref6">Cristovão 2008</xref>
        ]. O uso de
ferramentas que fornecem avaliadores automáticos em disciplinas de programação vem
sendo bastante pesquisado. Alguns exemplos de soluções pesquisadas são: avaliadores de
códigos, ferramentas para animação de algoritmos e identificadores de plágio.
      </p>
      <p>Nesta pesquisa, foram usados algoritmos de avaliação de similaridade para
classificar códigos com base na taxonomia SOLO (Structure of the Observed Learning
Outcomes). Dois objetivos foram adotados, sendo um comparar as classificações geradas
automaticamente com as classificações fornecidas por um conjunto de especialistas, e o
segundo verificar se a variação da quantidade de soluções de referência adotadas tem
impacto na qualidade das classificações geradas automaticamente.</p>
      <p>Este artigo está organizado da seguinte maneira, na Seção 2 são apresentados os
fundamentos teóricos necessárias para compreensão da pesquisa. Na Seção 3 são
apresentados os trabalhos relacionados ao contexto desta pesquisa. A metodologia
adotada, bem como os resultados obtidos e a discussão relacionada são exibidos na Seção
4. Por fim, na Seção 7 são descritas conclusões relativas a essa pesquisa.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Fundamentação Teórica</title>
    </sec>
    <sec id="sec-3">
      <title>2.1. Algoritmos de Avaliação de Similaridade</title>
      <p>Para este artigo foram utilizados algoritmos de similaridade com a finalidade de medir o
grau de semelhança entre duas entidades. Foram usadas quatro estratégias para a
identificação de similaridade, são elas: Coeficiente de Jaccard, similaridade baseada na
edição de texto (Text Edit Distance), similaridade baseada na edição de árvore (Tree Edit
Distance) e a frequência de termos (Term Frequency-Inverse Document Frequency)
(TFIDF). A seguir são apresentadas as descrições de cada estratégia utilizada:</p>
      <p>Coeficiente de Jaccard é uma técnica que é utilizada para calcular a similaridade
entre duas ou mais instancias. O valor de similaridade está contido dentro de um intervalo
de [0,1]. Dado dois conjuntos A e B, a divisão do tamanho da intersecção de A e B pelo
tamanho da união de A e B, resultará no valor de similaridade entre os dois conjuntos. Tal
como é exibido na Equação 1:</p>
    </sec>
    <sec id="sec-4">
      <title>Similaridade baseada na edição de texto corresponde ao cálculo do custo</title>
      <p>
        mínimo de uma sequência de operações que transformam uma cadeia X em outra cadeia
Y . Segundo [
        <xref ref-type="bibr" rid="ref9">Konstantinidis 2007</xref>
        ], o cálculo de similaridade é definido pela função (S),
onde dado duas strings A e B distintas, o resultado de SA,B = 1−dlA,B /max(|A|,|B|), onde dl
representa a distância de Levensthein e o max calcula o maior tamanho entre |A| e |B|. O
resultado de FA,B é o menor número de operações de inserção, remoção e substituição para
(1)
tornar duas cadeias iguais.
      </p>
    </sec>
    <sec id="sec-5">
      <title>Similaridade baseada na edição de árvore é uma técnica que dado um par de</title>
      <p>árvores (A,B) é possível determinar quantos passos são necessários para transformar
determinada árvore em outra aplicando as operações de edição, são elas: inserção,
remoção e substituição de nós. O valor obtido corresponde a dissimilaridade (ds) entre os
conjuntos, a similaridade s é dada pelo complemento (1 − ds).</p>
      <p>
        Frequência de termos é uma medida estatística que utiliza a frequência com que
um termo/palavra é exibido em uma string para determinar sua importância. Quanto
maior a frequência da palavra em um código qualquer maior será sua
relevância/importância. Existem diferentes estratégias na literatura para computar tal
medida. Neste artigo, foi utilizado a estratégia baseada na medida cosseno [
        <xref ref-type="bibr" rid="ref8">Gaudencio
2014</xref>
        ]. Para determinar a similaridade entre dois códigos, são criados dois vetores xi e xj
para representar cada código. A distância Cosseno (DC) entre xi e xj, é a distância se dá
pelo ângulo θ formado entre os dois vetores, tal como na Equação 2.
(2)
2.2.
      </p>
    </sec>
    <sec id="sec-6">
      <title>Medidas de Comparação</title>
      <p>Nessa pesquisa foram utilizadas métricas de comparação Cohen’s Kappa e Distância
Euclidiana com o objetivo de medir o quão próximo são as classificações dos algoritmos
quando comparados com a dos especialistas. A seguir as descrições de cada métrica:</p>
      <p>Kappa de Cohen é um método estatístico que avalia o nível de concordância além
do que seria esperado tão somente pelo acaso entre dois conjuntos de classificações.
Sejam dados dois conjuntos de classificações fornecidos por dois especialistas E1 e E2,
deseja-se saber o quanto E1 e E2 concordam entre si. A intensidade da concordância entre
E1 e E2 pode ser dada pela medida do coeficiente Kappa de Cohen. Este critério mede o
grau de concordância além do que seria esperado pelo acaso. O Kappa de Cohen é
adequado para obter a concordância entre classificações fornecidas por especialistas par
a par. Os valores de Kappa de Cohen variam em um intervalo de [-1,1], onde os valores
negativos representam discordância, os valores positivos representam concordância, onde
quanto maior o valor obtido maior será a concordância entre os conjuntos, e o valor 0
(zero) que representa que a concordância foi exatamente a esperada pelo acaso.</p>
      <p>Distância Euclidiana corresponde à distância em linha reta entre dois pontos em
um espaço euclidiano n-dimensional. Sejam dados dois pontos P e Q em um espaço
ndimensional, a distância euclidiana entre estes pode ser calculada de acordo com a
Equação 3, onde pi e qi representam respectivamente uma coordenada do ponto P e Q.
(3)</p>
    </sec>
    <sec id="sec-7">
      <title>2.3. Taxonomia SOLO</title>
      <p>
        Desenvolvida por [
        <xref ref-type="bibr" rid="ref5">Biggs e Collis 1980</xref>
        ], a taxonomia SOLO é um modelo que estabelece
um conjunto de categorias, que permitem classificar a complexidade da
compreensão/clareza sobre determinados assuntos. A taxonomia SOLO está dividida em
cinco classes crescentes de complexidade, que são: Pre-structural, Unistructural,
Multistructural, Relational e Extended abstract. No Quadro 1 segue a descrição de cada classe
pertencente a taxonomia SOLO e a interpretação adotada para cada uma delas.
      </p>
      <p>Quadro 1. Quadro do modelo adaptado da Taxonomia SOLO</p>
    </sec>
    <sec id="sec-8">
      <title>Classificação SOLO</title>
    </sec>
    <sec id="sec-9">
      <title>Descrição</title>
      <p>Extended abstract</p>
      <sec id="sec-9-1">
        <title>Relational Multistructural</title>
      </sec>
      <sec id="sec-9-2">
        <title>Unistructural</title>
      </sec>
      <sec id="sec-9-3">
        <title>Prestructural</title>
        <p>Resposta cumpre com 100% dos requisitos solicitados e vai
além, empregando conceitos mais avançados.</p>
      </sec>
      <sec id="sec-9-4">
        <title>Resposta cumpre com 100% dos requisitos solicitados.</title>
        <p>Resposta atinge alta porcentagem dos requisitos solicitados,
mas não os cumpre totalmente.</p>
        <p>Resposta atinge porcentagem intermediária dos requisitos
solicitados, só os cumpre parcialmente.</p>
        <p>Resposta atinge baixa porcentagem dos requisitos solicitados,
limitando-se aos aspectos mais básicos.</p>
        <p>Uma vez que era desejado apenas identificar se uma solução atendia todos os
requisitos solicitados, sem necessidade de análise do uso de conceitos mais avançados,
não foram diferenciadas as soluções Relational e Extended abstract. Dessa forma, caso
uma solução tenha atendido todos os critérios solicitados, independente dos constructos
utilizados, ela deveria ser classificada como Relational.</p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>Trabalhos Relacionados</title>
      <p>
        Nesta seção são descritos os artigos de [
        <xref ref-type="bibr" rid="ref2">Barbosa 2016</xref>
        ], [
        <xref ref-type="bibr" rid="ref15">Pelz 2012</xref>
        ] e [
        <xref ref-type="bibr" rid="ref10">Maciel 2012</xref>
        ] que
apresentaram maior relação com a presente pesquisa. A proposta usada neste artigo se
difere destes trabalhos principalmente nas medidas utilizadas para calcular a distância
entre os arquivos para determinar a similaridade. Enquanto nos trabalhos relacionados de
[
        <xref ref-type="bibr" rid="ref15">Pelz 2012</xref>
        ] e [
        <xref ref-type="bibr" rid="ref10">Maciel 2012</xref>
        ] o grau de similaridade é dado pelo cálculo de distância das
medidas Levenshtein e Cosseno, neste artigo são utilizadas um conjunto maior de medidas
para calcular o grau de similaridade. Em relação ao trabalho de [
        <xref ref-type="bibr" rid="ref2">Barbosa 2016</xref>
        ] foram
utilizadas soluções de referência com diferentes níveis de corretude, no presente artigo
todas as soluções de referências utilizadas são soluções totalmente corretas.
      </p>
      <p>
        Na pesquisa apresentada em [
        <xref ref-type="bibr" rid="ref2">Barbosa 2016</xref>
        ], foi levantado um questionamento se
a utilização de algoritmos de similaridade poderiam fornecer uma classificação
equivalente a avaliação de um especialista de acordo com a taxonomia SOLO. Foram
realizadas duas rodadas de experimentação, sendo estas: o uso dos algoritmos de
similaridade baseando-se em uma única solução de referência; e o uso dos algoritmos de
similaridade baseando-se em quatro soluções de referência com diferentes graus de
corretude. A comparação das classificações ocorreu através do uso de medidas estatísticas
de comparação entre as classificações obtidas com os algoritmos e aquelas fornecidas por
especialistas. Ao final do experimento, os autores descrevem que os resultados obtidos
pelos algoritmos tanto com uma solução quanto com quatro soluções de referência foram
bastante similares, e que os algoritmos de similaridade não tiveram uma boa concordância
com nenhum dos especialistas.
      </p>
      <p>
        No artigo desenvolvido por [
        <xref ref-type="bibr" rid="ref15">Pelz 2012</xref>
        ], é proposta uma técnica para a avaliação
automática de exercícios práticos de programação. Para isso, a avaliação dos algoritmos
foram divididas em quatro etapas, são elas: verificação sintática dos algoritmos,
verificação da presença de comandos obrigatórios (loops, condicionais), a similaridade
entre os códigos dos alunos e as soluções do professor e, por fim, a execução de
programas para verificar se as saídas geradas correspondem com as saídas esperadas. Para
a validação do mecanismo, foi realizado um experimento com 93 alunos de três turmas
de ingressantes no curso de Ciência da Computação. Para realizar as correções, foi
utilizada a métrica de cálculo de distância de Levenshtein para medir o grau de
similaridade dos algoritmos. Ao final do experimento, os autores descrevem que com os
resultados obtidos é possível fornecer a avaliação de pequenos exercícios práticos de
programação.
      </p>
      <p>
        O artigo proposto por [
        <xref ref-type="bibr" rid="ref10">Maciel 2012</xref>
        ], fornece uma avaliação para medir a
sensibilidade do algoritmo Sherlock quando os códigos são submetidos a técnicas de pré
processamento que visam a normalização antes da comparação. O objetivo é reduzir a
diferenciação dos códigos por aspectos irrelevantes (valores literais, nomes de variáveis,
comentários). Para isso, foram abordadas quatro técnicas de normalização, são elas:
remoção de linhas e espaços vazios, remoção de todos os caracteres situados entre aspas,
remoção de todas as palavras reservadas e remoção de todos os valores literais e variáveis.
Para validar a proposta, os testes foram analisados de duas formas, a primeira com base
em códigos gerados manualmente e, a segunda com algoritmos desenvolvidos por alunos.
Ao decorrer de um semestre foi utilizada uma ferramenta de análise de similaridade,
denominada BOCA Lab, em conjunto com o Moodle. Os resultados obtidos foram que a
ferramenta Sherlock não é eficaz para análise de similaridade sem antes ter feito uma
normalização adequada dos códigos.
      </p>
    </sec>
    <sec id="sec-11">
      <title>Metodologia</title>
    </sec>
    <sec id="sec-12">
      <title>4.1. Questões de pesquisa</title>
      <p>A condução desta pesquisa foi norteada para responder as questões de pesquisa:
QP1 - Adotando N soluções de referências classificadas como Relational, a avaliação
fornecida é equivalente a avaliação dos especialistas?
 H0: A classificação automática é igual a dos especialistas.</p>
      <p> H1: A classificação automática não é igual a dos especialistas.</p>
      <p>QP2 - A variação da quantidade de soluções de referências adotadas tem impacto na
qualidade das classificações geradas automaticamente?
 H0: As classificações são iguais independente da variação da quantidade de
soluções de referências adotadas.
</p>
      <p>H1: As classificações melhoram quando mais soluções de referências são
adotadas.</p>
    </sec>
    <sec id="sec-13">
      <title>4.2. Descrição dos dados</title>
      <p>O conjunto de dados utilizado nessa pesquisa é composto por: um conjunto de enunciados
de exercícios de programação; um conjunto de códigos submetidos pelos discentes como
soluções aos enunciados; um conjunto de algoritmos propostos como soluções de
referência e um conjunto de classificações fornecido pelo especialistas.</p>
      <p>O conjunto de enunciados de exercícios de programação é composto por quatro
enunciados, estes foram fornecidos como uma atividade prática em uma disciplina de
introdução a programação.</p>
      <p>O conjunto de códigos submetidos pelos discentes representa um total de 438
(quatrocentos e trinta e oito) soluções, sendo 131 para a primeira questão, 118 para a
segunda questão, 108 para a terceira e 81 para a quarta questão. As questões possuem
níveis de complexidade diferentes, sendo a primeira questão a mais fácil solução e a
última questão a mais difícil. Todas as soluções foram desenvolvidas na linguagem de
programação Python na versão 3.</p>
      <p>O conjunto de soluções de referência é composto por 32 programas, de modo que
cada questão possui 8 soluções de referências classificadas como Relational. Sendo
assim, um conjunto de quatro soluções possui similaridade abaixo de 0.5, enquanto o
outro conjunto de quatro soluções possui similaridade acima de 0.5.</p>
      <p>O conjunto de classificações foram fornecidos por três especialistas, sendo dois
destes professores e um tutor. As classificações foram realizadas em um momento
anterior a realização do experimento. Todos os especialistas receberam uma descrição da
taxonomia SOLO, o conjunto de enunciados e os códigos que deveriam classificar.</p>
    </sec>
    <sec id="sec-14">
      <title>4.3. Descrição do experimento</title>
      <p>Foram realizados três rodadas de execução no experimento, onde nestas foi alterada a
quantidade de soluções de referência e a similaridade entre estas soluções. Na primeira
rodada, foi utilizada apenas uma solução de referência classificada como Relational. Na
segunda rodada, foram utilizadas quatro soluções de referência classificadas como
Relational, onde a média de similaridade entre as soluções foi menor que 0.5. Na terceira
rodada, foram utilizadas outras quatro soluções de referência classificadas como
Relational, onde a média de similaridade entre elas foi maior que 0.5. Cada rodada foi
executada em três etapas: execução dos algoritmos de similaridade sobre os códigos
submetidos, geração dos valores referente a cada métrica de comparação e uma análise
dos dados.</p>
      <p>Todas as classificações receberam correspondentes numéricos, no seguinte modo:
Relational, Multistructural, Unistructural e Prestructural agora são 4, 3, 2 e 1
respectivamente. As soluções foram classificadas da seguinte forma, quando uma solução
foi classificada como relational quando a similaridade estava no intervalo (0.75, 1.00],
como multistructural quando no intervalo (0.50, 0.75], como unistructural quando no
intervalo (0.25, 0.50] e como prestructural quando no intervalo (0.0, 0.25].</p>
    </sec>
    <sec id="sec-15">
      <title>Resultados e Discussão</title>
      <p>Nesta seção serão apresentados os resultados obtidos na pesquisa, além de uma série de
discussões. Nas figuras 1, 2, 3 e 4 são exibidos os gráficos boxplots com os resultados
obtidos para o conjunto de especialistas e os algoritmos utilizados. Em todos os gráficos,
foram mantidos os resultados dos especialistas e da classificação obtida usando apenas
uma solução de referência.</p>
      <p>Foram adotados as seguintes nomenclaturas: ref1 o uso de apenas uma solução de
referência, ref4 o uso de quatro referências e ref4_E2 o uso de quatro referências na
rodada 2. Desta maneira, por exemplo, Tree_ref1 se refere ao resultado do algoritmo Tree
quando apenas uma solução foi utilizada, Tree_ref4 refere-se ao resultado do algoritmo
Tree quando quatro soluções foram utilizadas, e Tree_ref4_E2 refere-se ao resultado do
algoritmo Tree quando quatro soluções foram utilizadas na rodada 2.</p>
      <p>Para a medida de comparação Kappa, tomando como base a análise das medianas
exibidas nas Figuras 1 e 2. Percebe-se que a concordância entre os especialistas é superior
a concordância de todos os algoritmos, em todas as rodadas. Somente o algoritmo Tree
obteve, na primeira e segunda rodadas (”Tree_ref1”e ”Tree_ref4”), valores máximos
(Kappa = 0.48) e (Kappa = 0.48) superiores à mediana obtida entre especialistas (Kappa
= 0.405). Para todos os outros algoritmos os valores máximos obtidos foram inferiores à
mediana obtida entre os especialistas.</p>
      <p>Figura 1. Resultados da primeira rodada para a medida de comparação Cohen’s
Kappa.
Figura 2. Resultados da segunda rodada para a medida de comparação Cohen’s
Kappa.</p>
      <p>Em todas as execuções do experimento o algoritmo Tree Edition Distance foi o
que obteve melhores resultados, tanto com uma solução quanto com quatro soluções de
referência. Em relação a variação do número de soluções, na segunda rodada, observa-se
que o uso de um número maior de soluções resultou em um impacto negativo, muitos dos
resultados foram inferiores aos obtidos com uma solução de refeência apenas. Já na
terceira rodada, com exceção do algoritmo Tree, o impacto do uso de um maior número
de soluções foi positivo, pois os valores de máximo, mínimo e mediana, são em geral
maiores que os obtidos com uma solução apenas.</p>
      <p>Para a medida Distância Euclidiana, tomando como base a análise das medianas
exibidas na Figura 3 e 4. Com exceção dos algoritmos Jaccard e Text, todos os algoritmos
tiveram medianas bem próximas à mediana obtida entre os especialistas. Além disso, na
terceira rodada, o algoritmo “Tree_ref4_E2” (mediana DE = 8.065) foi o único a obter
uma mediana superior à mediana entre os especialistas (mediana DE = 8.245). Ao analisar
os valores de máximo, mediana e mínimo, percebe-se que o algoritmo Tree foi o que
obteve melhores resultados no experimento.</p>
      <p>Em relação ao número maior de soluções de referências utilizadas, para a segunda
rodada, com exceção do algoritmo Tree, o impacto foi positivo, pois em geral os valores
de máximo, mínimo e mediana obtiveram melhores resultados quando comparados com
os algoritmos que utilizaram apenas uma solução de referência. Já na terceira rodada, os
resultados foram melhores quando comparados com o uso de uma solução apenas. Desta
forma, é possível sugerir que o uso de uma maior quantidade de soluções de referência
melhora a classificação fornecida pelos algoritmos.
Figura 3. Resultados da primeira rodada para a medida de comparação Distância
Euclidiana.</p>
      <p>Figura 4. Resultados da segunda rodada para a medida de comparação Distância
Euclidiana.</p>
    </sec>
    <sec id="sec-16">
      <title>5.1. Análise da convergência das submissões</title>
      <p>Nesta seção são apresentados dados relacionados com a convergência das submissões dos
alunos em relação ao conjunto de soluções de referência utilizados. Observando os dados
é possível verificar como ficaram divididas as soluções submetidas, separadas pelo
algoritmo de similaridade adotado e pela solução de referência utilizada. Foram utilizadas
404 soluções do universo de 438, pois algumas soluções possuíam erros de sintaxe ou não
haviam sido classificadas por todos os especialistas. Na Tabela 1, são exibidos os dados
da análise de convergência, sendo R2, a segunda rodada do experimento, e R3 a terceira
rodada do experimento.</p>
      <p>Tabela 1. Análise de convergência das soluções.</p>
    </sec>
    <sec id="sec-17">
      <title>Algoritmos</title>
    </sec>
    <sec id="sec-18">
      <title>Solução A</title>
    </sec>
    <sec id="sec-19">
      <title>Solução B</title>
    </sec>
    <sec id="sec-20">
      <title>Solução C</title>
    </sec>
    <sec id="sec-21">
      <title>Solução D</title>
      <sec id="sec-21-1">
        <title>Jaccard Text Tree TFIDF</title>
        <p>R2
304
316
348
322</p>
        <p>R3
99
110
124
113</p>
        <p>R2
64
65
33
62</p>
        <p>R3
153
186
149
212</p>
        <p>R2
2
4
11
3</p>
        <p>R3
37
38
35
35</p>
        <p>R2
34
19
12
16</p>
        <p>R3
115
70
96
44</p>
        <p>Na Tabela 1, na segunda rodada percebe-se uma convergência para a solução A,
proposta pelo professor da disciplina, em relação as outras soluções, criadas para
realização do experimento. Isso demonstra que a solução de referência A obteve mais
concordância com os algoritmos propostos pelos alunos. Na terceira rodada, as soluções
propostas tiveram uma melhor divisão entre as soluções de referências utilizadas. A
solução B foi a que obteve uma maior concordância entre as soluções utilizadas e os
códigos submetidos. A mudança de convergência não gerou alteração significativa em
relação à classificação das soluções.</p>
      </sec>
    </sec>
    <sec id="sec-22">
      <title>6. Ameaças à validade</title>
      <p>As seguintes ameaças à validade se fazem presentes neste trabalho:
 A pequena quantidade de questões – a baixa quantidade de questões utilizadas não
permite a generalização dos resultados para outras questões;
 A quantidade de especialistas – apenas três especialistas forneceram
classificações, tal quantidade não é representativa do universo de especialistas;
 A linguagem adotada - apenas códigos na linguagem Python foram observados,
códigos de outra linguagem podem alterar os valores de similaridade obtidos e
portanto gerar resultados distintos daqueles aqui exibidos.</p>
    </sec>
    <sec id="sec-23">
      <title>7. Conclusões</title>
      <p>Neste estudo, foi apresentada uma investigação sobre o uso de algoritmos de avaliação
de similaridade com o objetivo de classificar uma solução de acordo com a taxonomia
SOLO. Em relação à qualidade da classificação, os resultados obtidos sugerem que o uso
destes algoritmos de forma isolada não reflete a classificação de um especialista. Em
relação à influência da quantidade de soluções de referência adotadas, os resultados
obtidos foram bastante próximos dado qualquer conjunto de soluções de referência.</p>
    </sec>
    <sec id="sec-24">
      <title>Referências</title>
      <p>Alexandre, Correia, A. L., and de Barros Costa, E. (2015). Um mapeamento sistemático
sobre analisadores de código em disciplinas de programação. In Anais do SBIE.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Araujo</surname>
            ,
            <given-names>E. C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gaudencio</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Menezes</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferreira</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ribeiro</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fagner</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ponciano</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Morais</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guerrero</surname>
            ,
            <given-names>D. S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Figueiredo</surname>
            ,
            <given-names>J. A.</given-names>
          </string-name>
          (
          <year>2013</year>
          ).
          <article-title>O papel do hábito de estudo no desempenho do aluno de programaç ao</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Barbosa</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Correia</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moura</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          (
          <year>2016</year>
          ).
          <article-title>Uso de algoritmos de similaridade para classificar códigos de acordo com a taxonomia solo em disciplinas de programação introdutória</article-title>
          .
          <source>In Anais dos Workshops do Congresso Brasileiro de Informática na Educação</source>
          , volume
          <volume>5</volume>
          , page 1107.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>Barbosa</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferreira</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Í</surname>
          </string-name>
          ., and
          <string-name>
            <surname>de Barros Costa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Influência da linguagem no ensino introdutório de programação</article-title>
          .
          <source>In Anais do CBIE/SBIE</source>
          , pages
          <fpage>612</fpage>
          -
          <lpage>621</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Barbosa</surname>
            ,
            <given-names>L. S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fernandes</surname>
            ,
            <given-names>T. C.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Campos</surname>
            ,
            <given-names>A. M.</given-names>
          </string-name>
          (
          <year>2011</year>
          ).
          <article-title>Takkou: Uma ferramenta proposta ao ensino de algoritmos</article-title>
          .
          <source>In Anais do CSBC/WEI.</source>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Biggs</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Collis</surname>
            ,
            <given-names>K. F.</given-names>
          </string-name>
          (
          <year>1980</year>
          ).
          <article-title>Solo taxonomy</article-title>
          . volume
          <volume>17</volume>
          , pages
          <fpage>19</fpage>
          -
          <lpage>23</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Cristovão</surname>
            ,
            <given-names>H. M.</given-names>
          </string-name>
          (
          <year>2008</year>
          ).
          <article-title>Aprendizagem de algoritmos num contexto significativo e motivador: um relato de experiência</article-title>
          .
          <source>In Anais do CSBC/WEI.</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <surname>Faceli</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lorena</surname>
            ,
            <given-names>A. C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gama</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Carvalho</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2011</year>
          ). Inteligência Artificial: Uma Abordagem de Aprendizado de Máquina. Livros Técnicos e Científicos.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>Gaudencio</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dantas</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Guerrero</surname>
            ,
            <given-names>D. D.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Can computers compare student code solutions as well as teachers</article-title>
          ?
          <source>In Proceedings of the 45th ACM technical symposium on Computer science education</source>
          , pages
          <fpage>21</fpage>
          -
          <lpage>26</lpage>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>Konstantinidis</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          (
          <year>2007</year>
          ).
          <article-title>Computing the edit distance of a regular language</article-title>
          .
          <source>Information and Computation</source>
          ,
          <volume>205</volume>
          (
          <issue>9</issue>
          ):
          <fpage>1307</fpage>
          -
          <lpage>1316</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>Maciel</surname>
            ,
            <given-names>D. L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Soares</surname>
            ,
            <given-names>J. M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>França</surname>
            ,
            <given-names>A. B.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Gomes</surname>
            ,
            <given-names>D. G.</given-names>
          </string-name>
          (
          <year>2012</year>
          ). Análise de similaridade de códigos-fonte como estratégia para o acompanhamento de atividades de laboratório de programação. volume
          <volume>10</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <surname>Mason</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          and Cooper,
          <string-name>
            <surname>G.</surname>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Introductory programming courses in australia and new zealand in 2013 - trends and reasons</article-title>
          .
          <source>In Proc. of the Sixteenth Australasian Computing Education Conference - Volume 148, ACE</source>
          , pages
          <fpage>139</fpage>
          -
          <lpage>147</lpage>
          , Darlinghurst, Australia.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>Moreira</surname>
            ,
            <given-names>M. P.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Favero</surname>
            ,
            <given-names>E. L.</given-names>
          </string-name>
          (
          <year>2009</year>
          ).
          <article-title>Um ambiente para ensino de programação com feedback automático de exercícios</article-title>
          .
          <source>In Workshop sobre Educação em Computação (WEI</source>
          <year>2009</year>
          ), volume
          <volume>17</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <surname>Noschang</surname>
            ,
            <given-names>L. F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fillipi Pelz</surname>
            ,
            <given-names>E. A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Raabe</surname>
            ,
            <given-names>A. L.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Portugol studio: Uma ide para iniciantes em programação</article-title>
          .
          <source>In Anais do CSBC/WEI</source>
          , pages
          <fpage>535</fpage>
          -
          <lpage>545</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <string-name>
            <surname>Paes</surname>
            ,
            <given-names>R. B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Malaquias</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guimaraes</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Almeida</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          (
          <year>2013</year>
          ).
          <article-title>Ferramenta para a avaliação de aprendizado de alunos em programação de computadores. In Anais do II Congresso Brasileiro de Informática na Educação (CBIE 2013) Workshops (WCBIE</article-title>
          <year>2013</year>
          ), Campinas, SP.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <string-name>
            <surname>Pelz</surname>
            ,
            <given-names>F. D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>de Jesus</surname>
            ,
            <given-names>E. A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Raabe</surname>
            ,
            <given-names>A. L.</given-names>
          </string-name>
          (
          <year>2012</year>
          ).
          <article-title>Um mecanismo para correção automática de exercícios práticos de programação introdutória</article-title>
          .
          <source>In Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação-SBIE)</source>
          , volume
          <volume>23</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <string-name>
            <surname>Ramos</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Freitas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Galimbert</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mariani</surname>
            ,
            <given-names>A. C.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Wazlawick</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          (
          <year>2015</year>
          ).
          <article-title>A comparação da realidade mundial do ensino de programação para iniciantes com a realidade nacional: Revisão sistemática da literatura em eventos brasileiros</article-title>
          .
          <source>In Anais do SBIE.</source>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <string-name>
            <surname>SBC</surname>
          </string-name>
          (
          <year>2005</year>
          ).
          <article-title>Currículo de referência da sociedade brasileira de computação para cursos de graduação em computação e informática</article-title>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>