Home   |   Structure   |   Research   |   Resources   |   Members   |   Training   |   Activities   |   Contact

EN | PT

EuPTCEEn1646-98952017000500006

EuPTCEEn1646-98952017000500006

National varietyEu
Year2017
SourceScielo

Javascript seems to be turned off, or there was a communication error. Turn on Javascript for more display options.

Desenvolvimento e validação de uma prova de avaliação das competências iniciais de programação

1. Introdução

A comunidade científica tem desenvolvido diversas propostas que visam ultrapassar as dificuldades inerentes à aprendizagem inicial da programação (e.g. Moons & Backer, 2013; Liu, Cheng & Huang, 2011; Johnsgard & McDonald, 2008; entre outros). No entanto, apesar de existirem estudos que apresentam resultados promissores nesta área (cf. Johnsgard & McDonald, 2008; Sykes, 2007; Wang, Mei, Lin, Chiu, & Lin, 2009; Zhang, Liu, &, Pablos, 2014) os instrumentos de recolha de dados utilizados variam significativamente, dificultando a possibilidade de retirar conclusões. Por exemplo, no estudo meta-analítico realizado por Costa e Miranda (2017), foi difícil comparar os resultados das investigações que visaram melhorar as competências de programação dos estudantes que se encontravam numa fase inicial de aprendizagem, não porque foram usadas diferentes linguagens de programação, mas ainda porque a avaliação feita usou diferentes instrumentos de medida. É o caso dos estudos de Wang, Mei, Lin, Chiu and Lin (2009) e de Sykes (2007), que utilizaram questionários, sendo o primeiro composto por 20 questões de escolha múltipla sobre conceitos de programação e o segundo por uma combinação de questões relacionadas com problemas de programação, umas fazendo apelo a conhecimentos, outras a competências e outras a resolução de problemas. Outras investigações usaram os resultados de provas académicas como medida de avaliação da aprendizagem inicial da programação (cf. Cooper, Dann, & Paush, 2003; Moskal, Lurie, & Cooper, 2004; Johnsgard, & McDonald, 2008; entre outros). Costa e Miranda (2017) referem que estas diferenças são um constrangimento à análise de resultados e que a existência de instrumentos validados para avaliar a aprendizagem da programação seria uma solução para melhorar a comparação entre diferentes estudos.

Füller et al. (2007) e Lister (2003) desenvolveram procedimentos genéricos a partir da Taxonomia de Bloom para o desenvolvimento de instrumentos de avaliação e de cursos que tenham como objetivo a aprendizagem da programação. No entanto, mantém-se a limitação da inexistência de um instrumento genérico validado que possa ser aplicado aos alunos na fase inicial desta aprendizagem .

Para colmatar a ausência deste tipo de instrumentos, propomos a criação de uma prova de programação em pseudocódigo. Esta prova deverá abranger os conceitos iniciais de programação e permitir compreender em que medida os estudantes aprendem a programar independentemente da linguagem de programação com que iniciaram a sua aprendizagem.

2. Metodologia de Desenvolvimento da Prova

Construímos a prova a partir das orientações de Tuckman (2012) para o desenvolvimento de testes de desempenho, nomeadamente: a) Desenvolvimento do plano geral do conteúdo; b) Desenvolvimento dos itens da prova; c) Demonstração da validade através da validação do conteúdo e da fiabilidade, os dois indicadores que demonstram a validade de provas de medição ou de avaliação de conhecimentos (Tuckman, 2012); e d) Análise dos itens da prova previamente validados.

2.1. Plano Geral do Conteúdo

Esta prova incide sobre os conceitos estruturantes de programação incluídos no currículo de disciplinas da área da Informática do ensino secundário em cursos científico-humanísticos e profissionalizantes, nomeadamente o desenvolvimento de algoritmos, variáveis, tipos de dados, operadores e estruturas de controlo (e.g. Pinto, Dias & João, 2009; Direção-Geral de Formação Vocacional, 2005). Para compreender até que ponto o aluno aprende estes conceitos considerámos pertinente a aplicação de um esquema de classificação que permitisse desenvolver esta análise.

Analisámos a Taxonomia de Bloom, uma taxonomia de objetivos educacionais que tem como principal característica a categorização de questões de acordo com o nível de complexidade de domínio cognitivo necessário para a sua resolução (Bloom, Engelhart, Furst, Hill & Krathwohl, 1976). Posteriormente foi apresentada uma proposta com a Taxonomia de Bloom revista (Krathwohl, 2002). Nesta versão as alterações consistem essencialmente na organização do conhecimento em matriz ao invés de uma apresentação unidimensional para permitir a distinção entre o tipo de conhecimento e o processo cognitivo e na substituição dos nomes de cada categoria por verbos que se aproximam dos nomes dos objetivos de aprendizagem. Também Füller et al. (2007) desenvolveram uma taxonomia em matriz que separa as capacidades de produzir e de interpretar código.

A construção da prova poderia ser suportada a partir de qualquer uma destas taxonomias mas considerando que este estudo incide sobre uma fase tão inicial da aprendizagem, a quantidade restrita de conteúdos programáticos não será suficiente para beneficiar da complexidade destas taxonomias. No entanto, consideramos que serão uma solução eficaz para a análise das competências de programação numa fase mais avançada. Como a nossa proposta abrange apenas os conceitos iniciais, entendemos que a utilização da Taxonomia de Bloom original seria a mais adequada.

2.1.1. Taxonomia de Bloom original

A taxonomia de Bloom completa é representada em três domínios: cognitivo, afetivo e psicomotor (Bloom et al., 1976). O domínio cognitivo está relacionado com a memória e o desenvolvimento de capacidades intelectuais; o domínio afetivo centra-se em objetivos relacionados com interesses, atitudes e valores; e o domínio psicomotor centra-se em habilidades motoras e de manipulação. Considerando os objetivos desta prova antes descritos entendemos que a sua construção deveria ser sustentada no domínio cognitivo.

Bloom et al. (1976) consideram que o domínio psicomotor tem pouca aplicação no ensino secundário e universitário. O domínio afetivo, apesar de ser objeto de interesse no campo da aprendizagem da programação, não faz parte dos objetivos do desenvolvimento desta prova, pelo que também foi excluído.

O domínio cognitivo da taxonomia é dividido em seis níveis: Conhecimento, Compreensão, Aplicação, Análise, Síntese e Avaliação. A Tabela 1 sintetiza os objetivos de todos os níveis da Taxonomia de Bloom (Bloom et al., 1976; Pinto, 2001). O primeiro nível, o Conhecimento, é apresentado como o mais simples e concreto enquanto que o último, o nível referente à Avaliação, é considerado o mais complexo e abstrato (Krathwohl, 2002; Lister, 2003). Bloom et al. (1976) referem que é esperado mais sucesso nos primeiros níveis da taxonomia e um decréscimo ao longo da hierarquia. Os autores apresentaram ainda um estudo em que verificaram que é mais frequente os indivíduos com baixos resultados escolares atingirem também baixos resultados nos níveis mais elevados da taxonomia e altos resultados nos níveis inferiores do que a situação inversa.

Nível da Taxonomia de Bloom

Objetivos

Conhecimento

Relembrar fórmulas, processos ou informação específica da atividade que aprendeu

Compreensão

Explicar determinada informação sem associar relações com outros conteúdos

Aplicação

Aplicar fórmulas, processos ou informação simples numa nova situação

Análise

Categorizar e distinguir informação

Síntese

Projetar uma solução a partir da decomposição de um problema

Avaliação

Analisar uma solução, otimizá-la e identificar e corrigir eventuais erros

Tabela 1 Objetivos da Taxonomia de Bloom

Bloom et al. (1976) referem ainda que é importante ter em conta as experiências anteriores dos participantes, porque um problema simples poderá exigir que o aluno apresente um raciocínio complexo ou, caso tenha experienciado problemas semelhantes em situações de aprendizagem anteriores, poderá apenas requerer que o aluno recorde ou aplique uma solução que conhece.

2.2. Itens da Prova

Na fase de estruturação dos itens da prova definimos o formato de questões para cada nível da Taxonomia de Bloom. De acordo com Gronlund (1988, citado por Pinto, 2001), os quatro níveis iniciais poderão ser avaliados com Perguntas de Escolha Múltipla (PEM) e os dois últimos com Perguntas de Desenvolvimento (PD), que requerem que o aluno demonstre um conhecimento mais profundo e não limitam a sua resposta. Pinto (2001) considera ainda que os dois primeiros níveis apresentam maior facilidade na aplicação de PEM.

Em seguida, ponderámos o número de questões que deveria constar na prova.

Considerando que estamos a construir uma prova para ser aplicada em 90 minutos, a nossa proposta é constituída por oito a 12 PEM e duas PD. Optámos por este intervalo de PEM para que cada nível da Taxonomia tivesse duas a três questões e cada questão demorasse aproximadamente dois minutos a ser respondida que, sendo uma prova para avaliar as competências iniciais de programação, entendemos que o aluno precise de tempo suficiente para a leitura e compreensão dos enunciados. Nas PD o tempo estimado foi consideravelmente maior para que o aluno tenha tempo suficiente para planear e desenvolver a sua resposta (Tuckman, 2012). Estimámos que o aluno utilize cerca de 20 minutos para responder a cada questão. A nossa proposta está de acordo com os valores apresentados por Pinto (2001), onde refere que deverão ser utilizadas 40 a 50 PEM para uma prova de 60 a 90 minutos e cinco a sete PD para uma prova de 120 minutos.

Após definirmos o formato e o número de questões que deveriam constar na prova, construímos um número superior ao proposto para que após o processo de validação e de fiabilidade pudéssemos optar pelos itens mais rigorosos. No total foram construídos 26 itens para serem submetidos ao processo de validação (Tabela 2).

Tabela 2 Estrutura da prova submetida ao processo de validação

2.3. Análise Estatística

Para determinar a validade de conteúdo, calculámos o CVR (Content Validity Ratio) para cada item, utilizando a fórmula proposta por Lawshe (1975). O cálculo foi efetuado a partir da análise dos itens por um painel de especialistas constituído por uma amostra não-probabilista e de conveniência (Almeida e Freire, 2016) definida com base nos seguintes critérios: os participantes teriam de ser professores de informática ou especialistas em informática, com prática de ensino de programação e com prática de programação, disponíveis para responder e participar na validação da prova. A solicitação à participação foi efetivada recorrendo ao contacto direto por correio eletrónico e a grupos de professores de informática em redes sociais. Após a recolha de participantes, o painel ficou composto por 12 especialistas: sete professores da área do ensino da Informática e cinco programadores de software.

Para cada item da prova, cada especialista teria de indicar se considerava o item adequado ou não adequado para o nível de ensino e conteúdo curricular apresentado. De acordo com Lawshe (1975) para um item ser considerado válido num painel constituído por 12 especialistas, o CVR associado deverá atingir pelo menos o valor de 0,56.

Em seguida analisámos a fiabilidade dos itens validados pelo painel de especialistas.

Para efetuarmos esta análise, aplicámos a prova a um grupo-piloto composto por 29 alunos de cursos profissionais que iniciaram a aprendizagem da programação no ano letivo de 2016/2017.

Posteriormente, codificámos as respostas dos itens de escolha múltipla com o valor 0 caso a resposta estivesse incorreta e com o valor 1 caso estivesse correta. No caso do itens de desenvolvimento utilizámos o mesmo procedimento. Contudo, a resposta era considerada correta conferindo uma lista de verificação dos passos do algoritmo desenvolvida para cada um dos itens.

As respostas codificadas dos alunos foram correlacionadas com a pontuação total e selecionámos os itens que obtiveram uma correlação ao nível de significância de 5%.

Para o cálculo da correlação utilizámos o coeficiente de correlação de Spearman por se tratar da análise de itens dicotómicos com a pontuação total (Marôco, 2014; Eisinga, Grotenhuis & Pelzer, 2013).

Após selecionarmos os itens válidos e fiáveis, procedemos à análise da dificuldade de cada item, verificando as diferenças significativas entre a frequência de respostas corretas.

Efetuámos esta análise a partir do teste Q de Cochran com comparações múltiplas (Marôco, 2014), utilizando o software SPSS Statistics (v. 24). Posteriormente, comparámos estes resultados com o nível hierárquico da Taxonomia de Bloom correspondente a cada item.

3. Resultados

3.1. Validação do Conteúdo

O resultado do CVR de cada item é apresentado na Tabela 3.

Tabela 3 Validação do conteúdo por painel de especialistas

No total foram validados 21 itens, distribuídos por todos os níveis da Taxonomia de Bloom: seis do nível Conhecimento; quatro dos níveis Compreensão e Aplicação; três do nível Análise; e dois dos níveis Síntese e Avaliação. Seguidamente os itens validados pelos especialistas foram submetidos ao processo de fiabilidade descrito na secção seguinte.

3.2. Fiabilidade

Na Tabela 4 apresentamos o resultado do cálculo do Coeficiente de Correlação de Spearman entre a pontuação de cada item validado e a pontuação total.

Tabela 4 Coeficiente de Correlação de Spearman

Após o cálculo da correlação entre cada item e o total, selecionámos os que atingiram um nível de significância de pelo menos 0,05. Os itens selecionados que correspondem a este nível de significância estão assinalados com asterisco. O item Q10 foi excluído porque não teve nenhuma resposta correta logo não foi possível calcular a correlação com a pontuação total. Optámos por selecionar apenas os itens com uma correlação significativa porque existem itens com esta característica em todos os níveis da Taxonomia. No total foram selecionados 13 itens: três do nível Conhecimento; dois do nível Compreensão; três do nível Aplicação; dois do nível Análise; um do nível Síntese; e dois do nível Avaliação.

Em seguida, calculámos o índice de fiabilidade através do modelo alfa de Cronbach para os itens selecionados. A prova atingiu um alfa de 0,837 o que, segundo Peterson (1994), é considerado um bom valor de fiabilidade.

3.3. Análise do Grau de Dificuldade dos Itens

Para analisar as diferenças entre a frequência de respostas corretas em cada item validado, considerámos como hipótese nula todos os itens terem o mesmo grau de dificuldade.

Figura 1 Frequência de respostas corretas por item

A Figura 1 apresenta a frequência de respostas corretas em cada um dos itens. As diferenças entre as proporções são estatisticamente significativas: Q(12) = 76,767; n=29; p=0,000 o que indica que os itens não têm todos o mesmo grau de dificuldade.

Podemos observar uma tendência para a diminuição de respostas corretas a partir do nível Aplicação.

A análise de comparações múltiplas permitiu observar diferenças significativas entre as proporções de respostas corretas entre as primeiras questões da prova e as últimas. Na Tabela 5 apresentamos os resultados que obtiveram o p-value menor que 0,001, ou seja, as comparações duas-a-duas entre os itens cuja diferença entre a proporção de respostas correta é maior (método Pairwise).

Tabela 5 Comparação pelo método Pairwise

As comparações com as diferenças estatisticamente mais significativas ocorreram entre os itens Q25 e Q02, Q26 e Q02, Q25 e Q16, Q25 e Q04 e Q26 e Q16 (p-value < 0,001 e p-valueaj < 0,001) o que indica que os itens Q02 (nível Conhecimento), Q04 (nível Conhecimento) e Q16 (nível Aplicação) correspondem às questões com menor grau de dificuldade e as questões Q25 (nível Avaliação) e Q26 (nível Avaliação) correspondem às questões com maior grau de dificuldade.

Analisando estes resultados em conjunto com a frequência de respostas apresentada na Figura 1, podemos afirmar que, tal como era esperado, os primeiros níveis da Taxonomia de Bloom têm, no geral, uma maior proporção de respostas corretas do que os últimos níveis. Este resultado permite-nos concluir que a prova tem itens pouco discriminativos pertencentes aos primeiros níveis da taxonomia mas de elevada importância pelo seu carácter motivacional e itens mais discriminativos nos últimos níveis que aferem conhecimento de programação mais profundo.

4. Conclusões

Neste artigo apresentámos o processo de criação e validação de uma prova de programação, desenvolvida para contribuir para a uniformização dos instrumentos de recolha de dados na aprendizagem inicial da programação. No processo de elaboração seguimos as orientações de Tuckman (2012) para o desenvolvimento de testes de desempenho e considerámos os tipos de dados pretendidos para análise, a flexibilidade de resposta, o tempo de preenchimento para cada questão e o grau de dificuldade.

Na estrutura da prova utilizámos questões de escolha múltipla que permitem reduzir a subjetividade da correção e questões de desenvolvimento que fornecem mais detalhes sobre o raciocínio do aluno. Após excluirmos os itens menos rigorosos consideramos que o número total (10 PEM e três PD) é adequado para 90 minutos. Os resultados obtidos na validação do conteúdo e fiabilidade da prova demonstram que a prova é constituída por itens válidos.

Consideramos que a utilização de uma taxonomia constituiu uma mais-valia no desenvolvimento da prova porque permitiu apoiar a construção e análise das questões de acordo com o grau de dificuldade pretendido. Os resultados da análise do grau de dificuldade revelaram que a prova tem itens mais discriminativos correspondentes aos últimos níveis da Taxonomia de Bloom e menos discriminativos mas mais motivantes nos primeiros níveis da taxonomia. Estes resultados correspondem às expectativas de Bloom et al. (1976) quando referem que é esperado mais sucesso nos primeiros níveis da taxonomia.

No Anexo A disponibilizamos a prova na versão final. No entanto, entendemos que deverá ser validada com novas amostras porque a fiabilidade foi analisada a partir de um grupo composto por apenas 29 alunos da mesma escola. Seria interessante verificar as diferenças estatísticas entre as respostas da prova utilizando grupos de diferentes cursos profissionais e com diferentes características.

Como trabalho posterior iremos desenvolver um estudo que utilizará esta prova para aferir os conhecimentos iniciais de programação adquiridos pelos alunos através de diferentes linguagens de programação. Este estudo será implementado no ano letivo 2017/2018 e permitirá verificar as diferenças entre grupos relativamente à aprendizagem com um ambiente de software ou com uma linguagem de programação tradicional. A utilização de um grupo-piloto que iniciou a aprendizagem em 2016/2017 para verificar a fiabilidade da prova permite antever com alguma confiança que os resultados serão fiáveis na instrumentação utilizada uma vez que o grupo-piloto tem características próximas dos grupos que participarão no trabalho experimental (Tuckman, 2012).

Esperamos ainda que esta prova possa vir a ser utilizada em estudos desenvolvidos por outros investigadores, pois a credibilidade da investigação reside também no uso de instrumentos válidos e fiáveis (cf. Almeida e Freire, 2016; Runa e Miranda, 2015; Tuckman, 2012; entre outros).

Anexo A

Prova De Avaliação Das Competências Iniciais De Programação

Esta prova está inserida no âmbito de um estudo sobre a aprendizagem inicial da programação. A sua aplicação pretende aferir o conhecimento de conceitos estruturantes de programação, nomeadamente o desenvolvimento de algoritmos, variáveis, tipos de dados, operadores e estruturas de controlo.

A prova está dividida em dois grupos. O primeiro grupo é constituído por perguntas de escolha múltipla com quatro opções de resposta. Cada questão tem uma única resposta correta que deverá assinalar colocando uma cruz na opção que considera correta. O segundo grupo é constituído por perguntas de desenvolvimento. Deverá desenvolver a sua resposta no espaço disponibilizado abaixo de cada questão.

Grupo I

Perguntas de Escolha Múltipla

1. Caso pretenda criar um valor que não irá ser alterado ao longo do meu algoritmo, devo inicializar: ..Uma constante ..Uma variável ..Uma estrutura de repetição ..Uma estrutura de decisão

2. Em programação, a condição Se…/Senão é uma estrutura de: ..Constantes ..Variáveis ..Repetição ..Decisão

3. Em programação, a condição Enquanto é uma estrutura de: ..Constantes ..Variáveis ..Repetição ..Decisão

4. Considere o seguinte algoritmo:

4.1. A variável n1 é declarada na linha:

4.2. É atribuído um valor à variável n1 na linha:

5. Considere o seguinte algoritmo:

5.1. Caso pretenda guardar o resultado do cálculo n1 / 2 na variável n1 apenas caso n1 seja maior que 3, devo modificar a instrução da linha:

..5 para a instrução Se n1 > 2 ..5 para a instrução Se n1 > 3 ..4 para a instrução n1 . n1 / 2 ..4 para a instrução n1 . 3

5.2. Caso a variável n1 recebida na linha 4 seja o valor 3, o output do programa será:

..Número inválido ..0 ..1.5 ..O programa não escreve nenhum resultado

5.3. Caso a variável n1 recebida na linha 4 seja o valor 0, o output do programa será:

..Número inválido ..0 ..1.5 ..O programa não escreve nenhum resultado

6. Considere o seguinte algoritmo:

6.1. Indique a linha de código onde é utilizado um tipo de operador aritmético:

..Linha 2 ..Linha 5 ..Linha 10 ..Linha 11

6.2. O operador utilizado na linha 11 é do tipo:

..Relacional ..Lógico ..Aritmético ..Variável

Grupo II

Perguntas de Desenvolvimento

1. Crie um programa que peça ao utilizador o comprimento do lado de um quadrado e que devolva o resultado do cálculo da área.

2. Crie um programa com o nome Calculadora que devolva o resultado da soma, multiplicação, divisão ou subtração de dois números decimais recebidos pelo utilizador. No final deverá escrever o resultado da operação escolhida pelo utilizador.

3. Considere o seguinte programa:

3.1. O tipo da variável resultado está incorreto. Justifique esta afirmação.


Download text