• Aucun résultat trouvé

Information Theoretic Converse

Dans le document Fundamental limits of shared-cache networks (Page 56-61)

O raciocínio lógico foi uma das habilidades mais citadas (20 publicações) e como descrito em B26, as disciplinas de introdução à programação têm como objetivo “ (…) trabalhar o raciocínio lógico voltado para a resolução de problemas de diferentes áreas do conhecimento humano” [p. 80]. Como observado na publicação B61 “(...)

tem-se verificado que um dos grandes motivos de evasão escolar nos cursos de computação (…), estão ligados às primeiras cobranças de raciocínio lógico, já que o aluno se sente incapaz de realizar tais abstrações lógicas” [p. 03]. Os autores do artigo B67 complementam este argumento: “(...) embora o raciocínio lógico não seja trabalhado exclusivamente em disciplinas de Matemática, é nessa área que geralmente esses saberes são mais explorados nas escolas. Diante deste cenário, é possível afirmar que cada vez mais os estudantes chegam com menor conhecimento

prévio sobre lógica e matemática em cursos superiores” [p. 02]. Já em B80 os autores

afirmam que “a maioria dos alunos que chegam às universidades apresenta dificuldades de raciocínio lógico” [p. 99]. Algumas publicações, como B20, B21, B22, B28, B33, B48, B51, B61, B70 e B80, apenas adicionam raciocínio lógico entre as habilidades necessárias ao processo de programar.

Abstração é mencionada por 13 publicações. Algumas pesquisas como as mencionadas em B01, B07, B11, B12, B20, B21, B22, B44, B51, B70 e B82 apresentam a abstração entre as habilidades necessárias ao processo de programar, junto de raciocínio lógico, resolução de problemas, base matemática, entre outras, habilidades que são pouco exploradas no ensino básico e médio. Em B24, os autores descrevem o processo de abstração como primordial para a escrita de programas de computadores e descreve esta habilidade como parte do processo do Pensamento Computacional: “(...) envolve compreender o problema e abstrair um modelo, dividir o problema em partes menores, decidir pela melhor estratégia para resolver cada uma das partes, e aplicar ou adaptar soluções (...). As habilidades e competências (abstração, decomposição, análise, etc.) para desempenhar esse processo é descrito como Pensamento Computacional (…) ” [B24, p. 2304]. Já os autores de B55 descrevem a atividade de programar como de alta abstração e complexidade e caracterizam esse tipo de pensamento como “abstrato ou lógico-discursivo” e comentam que é “a forma mais desenvolvida do pensamento, a qual apoia-se em conceitos e raciocínios abstratos operando, fundamentalmente por mediação. ” [B55, p. 1053-1054]. Já os autores de B21 e B82 comentam a lacuna de métodos educacionais que estimulam esse tipo de pensamento no ensino básico e médio: “A resistência perante a condução do aprendizado lógico se forma antes do começo das atividades, fato que pode ocorrer por sua característica lógico-matemática, dado o enraizado estigma relacionado aos conteúdos não abordados no nível médio. Dessa forma, o professor passa a necessitar de uma estratégia pedagógica adequada que

contribua para o aprendizado, o que acaba deixando claro que a absorção do conteúdo passado em sala de aula não depende apenas do nível de abstração do aluno” [B21, p. 03]; “problemas apresentados na compreensão de conceitos abstratos de programação encontra sua raiz ainda durante a formação básica, o que caracteriza uma importante lacuna a ser pesquisada. ” [B82, p. 157].

Onze publicações indicam a habilidade de resolução de problemas como uma das mais importantes e necessárias na aprendizagem de programação. As publicações B11, B20, B22, B47, B48 e B70 apenas indicam o processo de resolução de problemas como uma das habilidades necessárias para a aprendizagem da programação, mas não se aprofundam no tema. B26 indica que a programação é uma atividade “que tem como objetivo trabalhar o raciocínio lógico voltado para a resolução de problemas de diferentes áreas do conhecimento humano. ” [B26, p. 81]. Enquanto os pesquisadores da publicação B23 reforçam que precisamos incentivar o processo de resolução de problemas que estimula nos alunos a criatividade e racionalidade e descreve o processo de resolução de problemas como: “ (…) uma competência que envolve processos cognitivos como criatividade e racionalidade” [B23, p. 2186]. Para isto, as habilidades de leitura, interpretação e raciocínio dos problemas propostos devem ser desenvolvidas e incentivadas, respeitando o ritmo de cada indivíduo. Em B05, os pesquisadores reforçam que a atividade de resolução de problemas pode ser um déficit oriundo, em alguns casos, do ensino médio: “ Na segunda etapa o aluno irá elaborar uma sequência lógica de instruções para resolver o problema proposto. Esta é uma atividade que requer domínio do contexto do problema e, também, algumas habilidades de resolução de problemas. Muitos autores relacionam a dificuldade nesta fase ao desenvolvimento de estratégias de resolução de problemas no ensino médio” [B05, p. 02]. Nesse ponto, os pesquisadores de B05 se pautam nas publicações feitas por Giraffa; Marczak; Almeida (2003), Jesus e Brito (2009) e Vieira, Raabe e Zeferino (2010). A publicação B79 comenta sobre o déficit dos alunos em resolução de problemas no ensino básico:

(...) A título de exemplo, na prova do PISA2 2003, nas

questões relacionadas com a resolução de problemas, os processos avaliados foram muito próximos dos necessários

2 O Programa Internacional de Avaliação de Estudantes (PISA) é uma avaliação realizada pela

Organização para Cooperação e Desenvolvimento Econômico (OCDE), aplicada a cada três anos com estudantes de 15 anos – perto de concluírem o ciclo básico de ensino.

em programação, verificando-se que menos de 20% dos alunos conseguem resolver problemas difíceis (Nível 3). Nestes, o aluno deve ser capaz de analisar uma situação e

tomar decisões, manipular múltiplas condições

simultaneamente, pensar sobre as relações subjacentes a um problema, resolvê-lo de maneira sistemática, avaliar o seu trabalho e comunicar os resultados. No Brasil, mais de 50% dos alunos testados não conseguiram resolver problemas do Nível 1 (mais fáceis). Talvez não por coincidência, tiveram também um pobre desempenho na avaliação de leitura. [B79, p. 195].

Doze publicações listam o conhecimento em matemática como algo fundamental no processo de aprendizagem introdutória de programação. Em B79 os autores comentam que existe a premissa que caso o aluno seja bom em matemática será bom em programação e reforça essa visão analisando os dados do PISA 2003:

“Um outro aspecto interessante que se pode comunicar a partir da análise dos dados do PISA 2003 é que existe uma elevada correlação entre resolução de problemas e outras áreas de actuação, especialmente a matemática. No entanto, a performance na resolução de problemas matemáticos que envolvem simples cálculos, sem maiores inferências, apresenta baixa correlação com a performance na resolução de problemas. Estas conclusões alinham-se com a avaliação dos professores de que o conhecimento matemático não determina o sucesso na programação; estes acreditam que a correlação entre matemática e programação está ligada ao desenvolvimento de processos mentais comuns às duas áreas, como por exemplo a inferência. ” [B79, p. 195].

Ao mesmo tempo, os autores em B04, B44 e B67 reforçam a situação preocupante dos alunos com péssima base matemática chegarem no ensino superior:

(…) há correlação entre os conhecimentos em Matemática e o sucesso e conclusão

do curso por estudantes ligados à área de Computação. (…) No Brasil, os dados da proficiência em Matemática, de estudantes do Ensino Médio, obtidos por meio do Sistema de Avaliação da Educação Básica - Saeb, demonstram haver um declínio nos resultados ao longo dos últimos dez anos. Em 1995 o resultado foi de 282, passando para 289 em 1996, mas a partir desse ano os números diminuíram progressivamente

até chegar em 267 no ano de 2015 (…).” [B67, p. 01]; “A cada novo ano, a cada nova

maioria chega ao nível universitário sem uma base adequada nas disciplinas de Português e Matemática. Não é incomum encontrarmos alunos com sérias dificuldades na interpretação de textos e na resolução de equações matemáticas. ” [B04, p. 01]. B79 reforça como a habilidade matemática pode ser uma grande aliada no ensino de programação: “ (…) alguns professores acreditam que a habilidade matemática é importante para o sucesso na programação; todavia, a maioria acredita que a correlação de sucesso em ambas as disciplinas está ligada a funções cognitivas mais básicas que seriam comuns às duas áreas. Assim, ao conseguir desenvolver uma “lógica matemática”, o aluno adquire estruturas ou habilidades cognitivas que facilitam ou promovem a aprendizagem da programação. ” [B79, p. 192]. Em outras publicações como B12, B20, B33, B51, B79, B83 a habilidade matemática apenas é listada como uma das necessárias para os alunos iniciantes terem sucesso nas disciplinas introdutórias de programação.

Em seis publicações o conhecimento prévio em programação, pensamento algorítimico e ciências são citados como conhecimentos importantes para os alunos possuírem antes dos cursos de introdução à programação nas universidades. Nas publicações B51, B20 e B33 é comentado sobre a dificuldade dos alunos no raciocínio lógico que pode atrapalhar a adquirir a habilidade do pensamento algorítmico. Dessa mesma forma, nas publicações B12 e B33 os autores comentam que o conhecimento prévio básico em programação pode facilitar o início da aprendizagem nas disciplinas de introdução à programação no ensino superior. Esse argumento pode ser um indício que é preciso inserir o ensino de programação na Educação Básica de forma universal. Conhecimento prévio em ciências foi citado em B79, onde os autores indicam correlações entre conhecimentos prévios em matemática e ciência e desempenho positivo em programação:

Os estudos mostram que características como prévio conhecimento matemático e de ciências têm apresentado correlação com o desempenho dos alunos (…) acredita-se que esta correlação está mais ligada aos processos mentais que os alunos devem adquirir a fim de resolver problemas matemáticos e de laboratório, que são os mesmos ou similares aos necessários para a programação. [B79, p. 188].

4.5.1.2 Habilidades educacionais gerais

interpretação de texto e como isso interfere na aprendizagem de programação. Os pesquisadores de B04, B44 e B83 reforçam como estas habilidades precisam de mais atenção no ensino básico, respeitando o ritmo de cada iniciante: “ao analisarmos os estudos (...) e, a partir de nossa própria vivência como professores da disciplina de algoritmos e programação, com mais de 20 anos de experiência, observamos que os estudos buscam a opinião dos docentes que experenciaram esta disciplina e, a partir das suas avaliações e observações costumam apontar que a desistência/cancelamento da disciplina ocorre pelas seguintes razões: Deficiências relacionadas à expressão em língua materna (escrita), interpretação de textos e enunciados, hábitos de estudo e pesquisa e, especialmente, com formação básica deficitária no que tange a conteúdos de Matemática.” [B83, p. 02-03]. Em B23, os autores reforçam a leitura e a interpretação como importantes processos no auxílio da resolução de problemas em programação. Na publicação B70 é mostrado um estudo por Delgado et al. (2005) que identificou que a interpretação e compreensão de texto é uma das subcompetências para a atividade de construção de algoritmos.

A criatividade é analisada por três publicações como uma habilidade necessária nas etapas iniciais do entendimento do problema que será resolvido com a programação, como destacado em B79: “no que concerne o processo de programação em traços gerais, os alunos destacam a capacidade de raciocínio e algum nível de criatividade (…). A criatividade é apenas mais forte de início, na interpretação do aspecto formal; depois, os programas em si são apenas raciocínio. ” [B79, p. 193]. Em B76 a criatividade é empregada junto ao raciocínio lógico para auxiliar no processo prático de aprendizagem de programação. Em B11 e B79 os autores colocam o pensamento crítico (ou de análise crítica), a curiosidade intelectual e habilidade de discussão como fatores interessante para o aluno possuir antes da entrada na universidade.

Já B01 e B22 os pesquisadores comentam como o processo de concentração e memorização é essencial no processo complexo de aprendizagem de programação e, às vezes, doloroso para alunos iniciantes. E que, por vezes, os alunos iniciantes pecam na gestão de tempo e organização de hábito de estudo, como descrito em B07: “(...) outros problemas de aprendizagem podem ser resultantes da inabilidade do aluno estabelecer uma nova rotina de estudos, que lhe permita, inclusive, fazer uso de uma melhor gerência de tempo. ” [B07, p. 02]. E como reforçado em B07, muitos desses problemas relatados podem ter relação com a falta de maturidade dos alunos

estarem na transição entre o ensino médio e o ensino superior: “ (…) um aspecto interessante do processo foi a percepção de que, o aluno que ingressa em cursos superiores, em especial nas universidades públicas, é carente de conhecimentos basilares, mas, principalmente, de maturidade para superar os desafios que lhe serão impostos ao longo da sua formação” [B07, p. 08].

4.5.2 Dificuldades encontradas pelos estudantes (QP2)

Nessa seção serão comentadas as dificuldades encontradas pelos estudantes nas disciplinas de introdução à programação. As três primeiras categorias da Tabela 10 estão relacionadas aos três estágios do pensamento computacional apresentados por Repenning, Basawapatna e Escherle (2016) e escolhida como uma das bases conceituis dessa análise. Duas categorias foram adicionadas: uma relacionada aos conhecimentos prévios deficientes e a outra ao comportamento, que engloba aspectos sociais, emocionais e de autogerenciamento.

Tabela 10 – Dificuldades dos estudantes.

Categoria Dificuldade Referências

Formulação do problema Resolução de problema B03, B04, B07, B11, B13, B16, B19, B22, B37, B42, B47, B52, B57, B65, B66, B69, B70, B71, B73, B79, B82 Abstração B04, B07, B09, B16, B20, B26, B30, B32, B33, B41, B42, B43, B47, B52, B70, B71, B79, B82 Pensamento algorítmico e raciocínio lógico B16, B20, B21, B22, B34, B42, B43, B47, B52, B67 Expressão da solução Sintaxe da linguagem de programação B11, B16, B18, B20, B30, B39, B43, B47, B52, B54, B69, B79, B82 Estruturas de controle B07, B16, B67, B82 Estruturas de dados B16, B67 Estrutura do código B16 Execução da solução e avaliação Depuração (debugging) B01, B10, B11, B16, B18, B44, B47, B54, B55, B68, B69, B73, B83 Raciocínio simultâneo B01 Validação de soluções a

partir de análise crítica a soluções de outros autores

Reconhecimento de padrões B11 Conhecimentos de base Interpretação de texto / compreensão de enunciados B04, B05, B11, B16, B18, B30, B42, B47, B49, B69, B70, B71, B83 Matemática B05, B21, B49, B67, B71, B79, B82, B83 Inglês B47, B71 Comportamento Motivação, persistência e engajamento B01, B04, B05, B07, B09, B12, B15, B16, B18, B19, B21, B24, B26, B28, B32, B33, B37, B38, B51, B52, B67, B69, B70, B71, B80 Gerenciamento de tempo B07, B09, B23, B39, B83 Habilidade de estudo B07, B11, B51, B69 Maturidade B23, B49, B79 Dificuldade de socialização e pedir ajuda B07, B83 Confiança B19, B24 Autorregulação B09, B18 Concentração B59 Criatividade B79 4.5.2.1 Formulação do problema

Como esperado, a resolução de problemas apareceu como um desafio enfrentado pelos estudantes, com 21 estudos identificando esse processo como uma possível dificuldade, e ecoam os argumentos discutidos em relação a QP1 na Seção 4.4.1. Entendemos a resolução de problemas como o entendimento do problema e o planejamento de como resolvê-lo.

Os pesquisadores de B42, B73 e B79 comentam como o processo de resolução de problemas é usado nos cursos introdutórios de programação no ensino superior. Em B42 é comentado que o processo de resolução de problemas não necessariamente precisa estar associado ao processo de criação do algoritmo e explica como esse processo se dá durante os cursos introdutórios de programação no ensino superior: “O processo de resolução de problemas está relacionado à forma como se resolve o problema, não necessariamente de forma algorítmica. O processo

de resolução pode contribuir na relação entre os subsunçores3 e, conforme, como organizadores prévios, contribuindo, também, para a otimização da relevância.” [B42, p. 73]. Os autores em B79 comentam como o processo de resolução de problemas é utilizado nas disciplinas de introdução à programação, porém já associando ao processo de programação: “ (…) programar é vista como uma forma de resolução de problemas que pode ser decomposta em quatro fases: entender o problema, definir ou planear uma solução, implementar um plano, e verificar se está certo ou se é adequado o resultado atingido. Pensando nestas quatro fases, antecipamos a diversidade de competências e de conhecimentos envolvidos. ” [B79, p. 187].

Os autores em B65 argumentam, reforçando a visão de Bennedsen e Caspersen (2004), que “as abordagens tradicionais de ensino de programação não ajudam o estudante a construir a estrutura necessária para a resolução dos problemas. E muitos estudantes nem sabem por onde começar (…) ” [p. 03]. Em B16 os pesquisadores reforçam a visão que o déficit da resolução de problemas no ensino básico pode afetar nas disciplinas introdutórias no ensino superior “ (…) O desinteresse pode acontecer por dificuldades de interpretação, ou devido aos alunos se sentirem demasiados ansiosos para começar a codificar, sem antes compreenderem os dados do problema, dificultando a fase seguinte, a construção do algoritmo, que seria caracterizado pelo déficit na capacidade de resolução de problemas (…)” [B16, p. 1575]. No experimento realizado pela publicação B69 os participantes relatam suas estratégias de resolução de problemas de programação: “ (…) cerca de 60% ao se depararem com um problema procuram entendê-lo para em seguida transformá-lo em um algoritmo; 20% pesquisam por exemplos prontos na Internet, em livros, etc. enquanto 14% partem diretamente para a resolução do algoritmo sem se preocuparem em entender o problema a priori ”. [B69, p. 411-412]. Informação corrobora com o encontrado na publicação B66 no estudo proposto por Souza et al. (2013) que diz: “40% dos 80 alunos que participaram da pesquisa, estudantes de disciplina de ensino de lógica da programação, reportam dificuldades no entendimento do problema a ser resolvido. O entendimento do problema a ser resolvido é uma etapa anterior ao entendimento do conceito ou estrutura de programação que se está querendo ensinar. ” [B66, p. 03- 04]. Em B37 é reforçado como a atividade de programar (e o processo de resolução de problema) exige do aluno iniciante uma alta carga cognitiva: “a análise e a

3 Na literatura sobre aprendizagem significativa são conceitos relevantes que funcionam como

resolução de problemas através de algoritmos são alicerçados pela soma dos respectivos princípios e perícias. No entanto, a tarefa de programar impõe uma alta carga cognitiva sobre os iniciantes, pois exige a aplicação de ambas as categorias de conhecimento na externalização do código fonte. ” [B37, p. 631].

Outro problema citado por 18 publicações, também discutido no QP1, diz respeito à natureza abstrata da programação. Em B16 os autores citam que a ideia de abstração se refere a “uma modelagem de uma estrutura de dados de acordo com seu funcionamento” e completam alertando para a realidade do entendimento dos alunos sobre abstração: “No segundo período, 68,42% dos estudantes conhecem o conceito, mas, desconhecem a forma de aplicação. Menos da metade dos alunos do terceiro período dominam o conceito. No quarto período houve um empate entre os que também sabem do conceito, mas não sabem da aplicação e dos que dominam o assunto. ” [B16, p. 1580]. A discussão feita por B16 é uma continuação da realizada por Piva Jr., Freitas e Paula (2009). Já em B30, seguindo a mesma linha de entendimento de B16 e baseado no trabalho de Piva Jr. e Freitas (2010), os autores descrevem que “encontramos apontamentos de dificuldades relacionados a leitura e interpretação dos enunciados e capacidade de abstração das informações (…) ” [B30, p. 02].

Ainda sobre o problema de abstração, os autores em B26 dizem que o “(...) grande problema dos alunos consiste em abstrair e descrever as soluções para estes problemas contando com poucas e simples estruturas. ” [B26, p. 81]. Já em B52 dizem que “a aprendizagem da programação é um processo difícil devido à necessidade de um alto nível de abstração e do entendimento de alguma linguagem de programação ” [B52, p. 467]. Em B20, os autores dizem que “muitos acadêmicos iniciantes apresentam enormes dificuldades em absorver e aplicar certos conceitos abstratos de programação. (…) associam essa dificuldade à complexidade da linguagem de programação empregada e ao processo complexo de aprender e desenvolver lógica de programação. (…) condicionam essa dificuldade à falta de compreensão dos alunos sobre os conceitos básicos de programação, assim como a dificuldade em aplicar tais fundamentos. ” [B20, p. 02]. Em B47 e B82 existem relatos de dificuldades por parte dos estudantes exatamente na fase de abstração dos conceitos de programação. Nas publicações B07, B09, B16, B42, B71, B79 existem citações sobre a dificuldade em abstração por parte dos estudantes, porém não se aprofundam no tema.

Outro problema mencionado é o pensamento algorítmico e o raciocínio lógico com 10 publicações. Esse problema também apareceu na QP1. Os autores em B37, B42, B47 e B67 acreditam que o pensamento algorítmico e o raciocínio lógico são essenciais de ser desenvolvido no aluno desde os primeiros contatos com a disciplina de introdução à programação no ensino superior, porém contam com uma série de desafios e que tem causado desmotivação e desistências nos primeiros períodos do curso: “No caso específico do estudo de computação, o grande desafio consiste em desenvolver habilidades relacionadas ao raciocínio lógico-matemático. Desenvolver tal capacidade nos alunos é uma árdua tarefa, que vem causando desânimo por parte dos alunos quando enfrentam o estudo desta disciplina, favorecendo a ocorrência de reprovações e desistências ” [B34, p. 17]; “a falta de compreensão dos problemas e o raciocínio lógico” [B42, p. 68]. B67 reforça os déficits destes conteúdos na entrada do curso superior. Na publicação B47 é reforçado como as habilidades esperadas no raciocínio lógico, tais como tentar, observar, avaliar e deduzir, não estão sendo empregadas devidamente no curso superior. Nas publicações B16, B20, B22 e B43 é citado também dificuldades por partes dos estudantes na habilidade de raciocínio lógico junto a outras habilidades citadas como resolver problemas e abstração, porém não se aprofundam no tema.

4.5.2.2 Expressão da solução

Categoria Dificuldade Referências

Expressão da solução Sintaxe da linguagem de programação B11, B16, B18, B20, B30, B39, B43, B47, B52, B54, B69, B79, B82 Estruturas de controle B07, B16, B67, B82 Estruturas de dados B16, B67 Estrutura do código B16

O primeiro problema na fase de expressão de solução é a sintaxe de linguagem de programação, identificado por 13 publicações. Nas publicações B16, B20 e B82 o mesmo princípio é compartilhado que as linguagens de programação utilizadas no ensino introdutório de programação têm sintaxe e semântica complexas e focadas para ambientes de desenvolvimento industrial. Em B16 os autores destacam que, além das dificuldades citadas nessa seção, “as linguagens de programação possuem

sintaxes adequadas para profissionais, mas não para aprendizes inexperientes. ” [B16, p. 1578]. Em B20 é reforçado que uma linguagem de programação cuja sintaxe “seja bem específica e complexa” [B20, p. 20] pode ser um fator determinante de

Dans le document Fundamental limits of shared-cache networks (Page 56-61)