You are on page 1of 11

Uma proposta para ajudar alunos com dificuldades na aprendizagem inicial de programao de computadores

ANABELA GOMES Instituto Superior de Engenharia de Coimbra; Centro de Informtica e Sistemas da Universidade de Coimbra, anabela@isec.pt JOANA HENRIQUES Centro de Informtica e Sistemas da Universidade de Coimbra, joanahenriques33@hotmail.com ANTNIO JOS MENDES Centro de Informtica e Sistemas da Universidade de Coimbra, toze@dei.uc.pt

Resumo: Os elevados nveis de insucesso em disciplinas onde so ensinados os conceitos mais bsicos de programao, em qualquer grau e sistema de ensino, um problema universal que tem sido alvo de variadas pesquisas, resultando tambm em diversificados sistemas, sem que contudo o panorama tenha melhorado significativamente. Na nossa ptica existe um conjunto de razes que esto na origem do problema, nomeadamente, mtodos de ensino e aprendizagem desadequados, falta de vrios tipos de competncias por parte dos alunos, em particular no que respeita resoluo de problemas, a difcil natureza do tema e uma forte conotao negativa que lhe est associada. Porm, pensamos que as metodologias tradicionalmente utilizadas para aprender/ensinar estes assuntos no se revelam suficientes, pelo que apresentada uma nova proposta, centrada na actividade de resoluo de problemas, de acordo com o nvel cognitivo do aluno e os seus estilos preferenciais de aprendizagem. Palavras-chave: Ensino e Aprendizagem Aprendizagem, Psicologia da Programao. da Programao, Estilos de

1. INTRODUO No seu nvel mais elevado de proficincia a programao muito mais do que a escrita de um conjunto de linhas de cdigo numa dada linguagem, uma arte e uma cincia. Arte porque existem muitas maneiras diferentes de codificar instrues, com alguma criatividade. tambm uma cincia, porque constituda por um conjunto de regras orientadoras, porque necessrio o uso de lgica e porque existem alguns mtodos rigorosos de programao que asseguram a eficincia, economia e utilidade dos programas gerados. A um nvel mais bsico, o ensino das linguagens de programao tem como propsito conseguir que os alunos desenvolvam as suas capacidades, adquirindo os conhecimentos bsicos necessrios para conceber programas capazes de resolver problemas reais simples. Porm, a este nvel, existem

93

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

enormes taxas de insucesso nas disciplinas de programao onde estes aspectos bsicos so ensinados. A experincia tem demonstrado que existe, em termos gerais, uma grande dificuldade em compreender e aplicar certos conceitos abstractos de programao, por parte de uma percentagem significativa dos alunos que frequentam disciplinas introdutrias nesta rea. Uma das grandes dificuldades reside precisamente na compreenso e, em particular, na aplicao de noes bsicas, como as estruturas de controlo, para a criao de algoritmos que resolvam problemas concretos. Existem opinies variadas e por vezes divergentes no que respeita s causas para tal insucesso, em funo das quais tm surgido diferentes ferramentas com o propsito de minimizar essas dificuldades. Embora a avaliao da utilizao dessas ferramentas frequentemente mostre impactos positivos no desempenho de alguns estudantes, as taxas de evaso e repetncia em disciplinas de programao continuam elevadas. Neste artigo so discutidas vrias causas apresentadas na literatura, que contribuem para o insucesso do ensino/aprendizagem de programao, problemtica que nos tem levado a reflectir sobre uma srie de questes que tambm apresentaremos. Ser igualmente apresentada uma nova proposta que pretende contribuir para minimizar este problema. 2. OS PROBLEMAS DE APRENDIZAGEM DE PROGRAMAO NA
LITERATURA

De acordo com Dijkstra (1989) e Perkins et al. (1988) a aprendizagem de programao requer um treino intensivo em resoluo de problemas, envolvendo competncias de diversas reas para obter um pequeno retorno. Os autores afirmam ainda que, em simultneo, se exige uma preciso e ateno a detalhes muito mais elevada do que a requerida pela maioria das outras disciplinas. Porm, autores como Byrne e Lyons (2001) referem que no h nada inerentemente difcil no assunto mas, simplesmente, existem alunos que no tm as aptides necessrias para programar, nomeadamente de resoluo de problemas e de matemtica. Igual opinio manifestada em Jnior e Rapkiewicz (2004, 2005). Jenkins (2002) refere vrias causas do insucesso generalizado em disciplinas de programao, como sejam o baixo nvel de abstraco, a falta de competncias de resoluo de problemas, a inadequao dos mtodos pedaggicos aos estilos de aprendizagem dos alunos, referindo ainda que as linguagens de programao possuem sintaxes adequadas para profissionais mas no para aprendizes inexperientes. Sloane e Linn (1988) referem que algumas das capacidades exigidas so bvias, considerando como essenciais a capacidade de resoluo de problemas e alguma ideia da matemtica subjacente ao processo. Consideram tambm que um programador dever ser capaz de usar o computador eficientemente, tem de saber criar um programa num ficheiro, compil-lo e encontrar os resultados gerados. O programa produzido dever ento ser testado, os bugs encontrados e corrigidos. Porm, segundo estes autores, estas so as competncias fceis de identificar. Consideram tambm que existem competncias menos bvias, classificadas como competncias de vida. Os mesmos autores referem ainda que programar no consiste apenas numa nica capacidade, no se trata apenas de um conjunto de aptides mas antes de uma hierarquia de aptides e um programador necessitar de muitas delas em algum momento da sua vida. Bereiter e Ng (1991) referem que um aluno que se depare com a aprendizagem de uma hierarquia de competncias, geralmente comea pelas de mais baixo nvel progredindo gradualmente at s mais exigentes. Os autores concretizam que, no caso da codificao (uma pequena parte de uma competncia de programao) implica que os alunos aprendam a sintaxe bsica e gradualmente aprendam a semntica, estrutura e finalmente o estilo.

A literatura apresenta diversas justificaes para a dificuldade inerente ao aprender a programar. Dijkstra (1989) argumenta que este tipo de aprendizagem um processo lento e gradual. Almeida et al. (2002) referem que se observa, neste tipo de matrias, falta de interesse por parte dos alunos. Referem adicionalmente que esta desmotivao est associada a uma forte carga de conceitos abstractos que intervm em todo o conhecimento envolvido na actividade de programao, onde as caractersticas prprias das linguagens e ambiente de programao, cada vez mais sofisticados e da mquina em si, tendem a dificultar a programao. Tambm Motil e Epstein (2000) afirmam que a maioria das linguagens de programao utilizadas nas disciplinas introdutrias apresenta uma sintaxe grande e complexa, mais adequada para ambientes de desenvolvimento industrial.

94

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

O que sugere que aprender a programar um processo que exige tempo e maturidade. Jenkins (2002) argumenta que a programao normalmente ensinada como assuntos fundamental no incio de um curso superior, sendo esse um momento de transio e muitas dificuldades/novidades, pois muitas vezes a transio para a universidade implica pela primeira vez uma vida autnoma, independente e longe dos familiares. Este autor considera que a programao por si uma matria difcil quando os alunos esto estveis, sendo a situao agravada num perodo de transio. O mesmo autor refere-se tambm falta de motivao devido imagem negativa apresentada pelos programadores. Existe a imagem pblica de um programador como um desadequado social, o que faz com que seja pouco provvel que os alunos aspirem a uma imagem deste tipo. Outros autores referem que a generalidade dos alunos no tm motivao intrnseca para estudar estes assuntos e sem este tipo de motivao dificilmente sero bem sucedidos (Bereiter e Ng, 1991). Por seu lado, Dunican (2002) afirma que os problemas verificados com os alunos de programao Irlandeses so o produto dos sistemas educativos (primrios e secundrios) sem mdulos de resoluo de problemas ou lgica, em qualquer uma das suas disciplinas. Em segundo lugar, estes autores afirmam que outro grande problema se prende com a natureza abstracta da tarefa de programar. Noes como variveis, tipos de dados, memria dinmica, entre outros, no tm correspondncia na vida do dia-a-dia, e compreender estes conceitos fundamentais de programao no simples. Em terceiro lugar, as exigncias rgidas em termos de sintaxe quando comparada com a natureza inexacta e livre da lngua inglesa faz com que muitos alunos no sejam capazes de escrever programas compilveis bem sucedidos. 3. OS PROBLEMAS DE APRENDIZAGEM DE PROGRAMAO - A NOSSA PERSPECTIVA Na nossa perspectiva existe um conjunto de factores que complicam a difcil tarefa de aprender a programar, relacionados com os mtodos de ensino, os mtodos de estudo e a natureza especfica do tipo de matria.

Relativamente aos mtodos de ensino, na prtica ainda no existe um verdadeiro ensino centrado no aluno. Os tempos lectivos continuam a ser demasiado apertados e as turmas demasiado grandes para promover um ensino personalizado, com um feedback e superviso adequados s necessidades de cada aluno. Adicionalmente, muitos professores continuam a achar que o ensino superior no necessita de pedagogia e que os alunos tm obrigao de se adaptar ao estilo de cada professor. Frequentemente, os professores esquecem-se de diversificar as suas estratgias de forma a contemplar a grande diversidade de pensamentos, compreenses, ritmos e estilos de aprendizagem existentes em cada turma. A natureza especfica da programao, substancialmente diferente do da maioria das disciplinas, implica o ensino de muitos conceitos dinmicos que , normalmente, realizado atravs de materiais de natureza esttica (apresentaes projectadas, explicaes verbais, diagramas, desenhos no quadro, textos, e assim por diante) no promovendo uma plena compreenso da dinmica envolvida. Tambm a estrutura curricular das disciplinas de programao est na nossa ptica virada ao contrrio, seguindo uma aproximao bottom-up quando pensamos que o ideal seria uma abordagem top-down. prtica comum comear por ensinar os detalhes sintcticos de uma linguagem de programao, qualquer que ela seja, antes que os alunos, percebam qual a finalidade e utilidade de aprender programao. Pensamos que a preocupao principal deveria ser antes de mais o desenvolvimento da capacidade de resoluo de problemas, aparecendo a linguagem de programao apenas como um veculo para concretizar essa resoluo, ou seja, para expressar o algoritmo ou estratgia de resoluo. Relativamente aos mtodos de estudo adoptados pelos alunos so tambm desejveis diversas mudanas. Os alunos esto frequentemente habituados a disciplinas s quais possvel ser bem sucedido atravs de abordagens de estudo baseadas em leituras sucessivas, memorizao de frmulas e uma certa mecanizao de procedimentos. Porm, a programao impe um estudo bastante diferente, exigindo prtica intensiva, uma verdadeira compreenso dos assuntos e reflexo. Adquirir competncias necessrias para programar envolve para alm do conhecimento do domnio da programao, um bom background de conhecimentos matemticos e de resoluo de problemas. Assistir s aulas e estudar um livro de texto no o suficiente. Programar exige um intenso trabalho extra aulas. Aos alunos falta
95

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

muitas vezes a persistncia exigida por problemas cuja soluo no se encontra normalmente de forma simples e rpida, como acontece com a maioria dos problemas de programao. precisamente o conhecimento adquirido na procura de uma resoluo difcil, que permite desenvolver estruturas cognitivas valiosssimas neste domnio. Porm, pensamos que os problemas de muitos alunos se prendem com um conjunto de dificuldades concretas que levam a que no consigam programar, mesmo quando se esforam. A primeira dificuldade, frequentemente no percebida pelos alunos, diz respeito compreenso do problema, pois muitas vezes os alunos saltam para a fase de codificao, sem compreenderem completamente o que pretendido. Tal pode acontecer por dificuldades de interpretao ou devido aos alunos se sentirem demasiado ansiosos para comear a codificar uma soluo. importante que os alunos compreendam completamente os dados do problema e o que esperado obter como resultado, para que posteriormente possam pensar no algoritmo necessrio para essa transformao. No entanto, as grandes dificuldades sentidas pelos alunos so geralmente verificadas na fase seguinte, a construo do algoritmo, o que na nossa opinio fundamentalmente devido a um dfice de capacidade de resoluo de problemas manifestado por muitos alunos. Se a resoluo de problemas genricos j implica competncias referidas nos ltimos patamares da Taxonomia de Bloom (Bloom, 1956), a resoluo de problemas de programao exige ainda vrias outras competncias, algumas das quais tm de estar activas simultaneamente. Associada a esta questo est tambm um elevado dfice de conhecimentos matemticos bsicos manifestado por muitos alunos. Gomes et al. (2006) conduziram algumas experincias a fim de encontrar correlaes entre a falta de conhecimentos matemticos e a carncia de competncias de programao. Nesta experincia os autores concluram que os alunos com problemas em aprender a programar apresentavam dificuldades profundas em diversas reas, tais como clculo bsico e teoria de nmeros ou conceitos geomtricos e trigonomtricos simples. Os autores relatam tambm dificuldades em relacionar a descrio textual de um problema com a frmula matemtica que o resolve. Limitaes ao nvel da abstraco e do raciocnio lgico foram tambm identificadas. Todos estes problemas levam a que os alunos inexperientes apresentem

dificuldades em aplicar conceitos bsicos, como estruturas de controlo, para resolver problemas reais, numa fase inicial de aprendizagem de programao. Outro aspecto importantssimo, corresponde ltima etapa da programao, muitas vezes negligenciada pelos alunos, o teste e reflexo sobre o problema e sua soluo. Geralmente os alunos, no fazem o teste/simulao da soluo construda ou quando muito fazem-no muito superficialmente ou apenas para um conjunto reduzido de testes sem verificao de casos limite. A reflexo acerca da forma de resoluo de determinado problema, bem como o questionamento sobre novas propostas de soluo em funo de alteraes no enunciado, constituiria uma maisvalia para a aprendizagem dos alunos se fosse uma prtica habitual. Por ltimo, tambm consideramos, tal como outros autores j referidos, a falta de motivao apresentada por muitos alunos como uma preocupao a no descurar. 4. PROPOSTA Como resolver ou minimizar cada um dos problemas referidos? Pensamos que o desenvolvimento e utilizao de um ambiente computacional com caractersticas inovadoras poder resolver parte dos problemas focados. Ao longo dos tempos foram desenvolvidos diversos tipos de sistemas computacionais de apoio aprendizagem da programao, recorrendo a representaes visuais/animaes de algoritmos, linguagens de programao baseadas em cones, Sistemas de Tutores Inteligentes, micromundos de aprendizagem, entre outros. O nosso grupo tambm j desenvolveu algumas ferramentas destinadas a apoiar a aprendizagem bsica de programao nomeadamente o VIP (Mendes e Mendes, 1988) o SICAS (Gomes e Mendes, 2001), o PROGUIDE (Areias, 2007), o OOP-ANIM (Esteves e Mendes, 2004) e o SICAS-COL (Rebelo, 2007). Mas com um conjunto to vasto de alternativas, que segundo os seus autores representam um contributo valioso para o ensino/aprendizagem de programao, porque razo que os problemas subsistem? Porque que essas ferramentas no so amplamente utilizadas

96

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

com resultados satisfatrios? Na realidade, e pelos estudos j efectuados, parece que nenhuma das ferramentas disponveis supre completamente as exigncias da aprendizagem de programao. Como pensamos que o problema principal reside na incapacidade de os alunos resolverem problemas, ou seja, construrem algoritmos que os resolvam, criou-se uma aplicao, SICAS (Sistema Interactivo para Construo de Algoritmos e sua Simulao) (Gomes, 2002), cuja preocupao principal era fornecer um ambiente onde os alunos no apenas compreendessem as diversas fases de um algoritmo j concebido, mas sobretudo que permitisse que o aluno concebesse, testasse, experimentasse, alterasse e corrigisse os seus prprios algoritmos. Contudo, as avaliaes efectuadas com o SICAS demonstraram que a abordagem utilizada no suficiente para contemplar todos os alunos. Por um lado, um ambiente que no promove de igual forma todos os estilos de aprendizagem, mas antes favorece os alunos marcadamente visuais em detrimento dos verbais. Por outro lado, constitui uma abordagem til apenas para aqueles alunos que quando confrontados com o enunciado de um problema conseguem iniciar a sua resoluo e construir uma primeira soluo, mesmo que no completamente correcta. Mas, na realidade, existem muitos alunos com enormes dificuldades que perante o enunciado de um problema simples nem sequer conseguem chegar a uma primeira proposta de soluo. Nestes casos o SICAS de pouca utilidade. Assim, a nossa proposta centra-se em primeiro lugar num ensino personalizado, que adapte as actividades a cada aluno de acordo com o seu estado cognitivo, ritmo e estilo de aprendizagem. Um aspecto central do sistema em desenvolvimento consiste em diagnosticar o estilo de aprendizagem preferencial de cada aluno, de modo a condicionar a forma de apresentao dos problemas/actividades em todo o ambiente. Existem diferentes modelos para determinar o estilo de aprendizagem de um indivduo, nomeadamente The Myers-Briggs Type Indicator (MBTI) (Myers e McCaulley, 1985), The Kolbs Learning Style Model (Kolb, 1985), The Felder-Silverman Learning Style Model (Felder, 1988), entre outros. Porm, temos vindo a fazer diversas experincias com o The Felder-Silverman Learning Style Model adoptando o tipo de inqurito nele proposto para diagnosticar os estilos de aprendizagem dos alunos. A principal razo da escolha deste modelo prendese com o facto de ter sido desenvolvido a pensar em alunos de engenharia, tambm o nosso pblico-alvo, para alm de possuir um inqurito on-line que

facilmente permite caracterizar um indivduo. No entanto, outros modelos no esto ainda excludos. Pretende-se ento construir um sistema centrado no desenvolvimento da capacidade de resoluo de problemas, sendo baseado numa aproximao construtivista da aprendizagem, onde o aluno aprende fazendo, experimentando e deduzindo, construindo progressivamente o seu prprio conhecimento. Uma parte fundamental do ambiente, consiste na incorporao de vrios tipos de actividades ldicas e jogos lgicos que, de uma forma atractiva e estimulante, permitam desenvolver a capacidade de resoluo de problemas nos alunos. A metodologia proposta constituda por trs fases. A primeira trabalha a resoluo de problemas de diversos domnios (quebra-cabeas simblicos, quebra-cabeas lgicos, jogos e charadas, problemas simples de aritmtica e geometria, entre outros) no tratando directamente de algoritmos ou de programao. Em seguida, e gradualmente, o sistema mostrar ao aluno a utilidade da programao, com aplicao dos conhecimentos adquiridos na fase anterior. Finalmente, o objectivo passa pela construo de algoritmos, pretendendo transformar a formalizao desenvolvida em procedimentos sistemticos. Gradualmente, os problemas apresentados ao aluno passaro a exigir solues mais elaboradas, nas quais cada vez mais estar inerente o acto de explicitar procedimentos. Cada uma das fases apontadas sempre aplicada de acordo com o estado actual de conhecimento do aluno e do seu estilo preferencial de aprendizagem. 4.1. 1 Fase Resoluo de Problemas Na primeira fase, a grande questo prende-se com o tipo de problemas a apresentar aos alunos. Ser que qualquer tipo de problema desenvolve as capacidades pretendidas? Que capacidades, competncias ou funes cognitivas se pretendem realmente exercitar? De forma a responder a estas questes pesquisou-se a literatura sobre as competncias necessrias para resolver problemas de programao. De acordo com diversos autores estas envolvem, habilidades matemticas, raciocnio analgico, raciocnio condicional; pensamento procedimental e raciocnio temporal (Pea e Kurland, 1984) ou raciocnio analtico, raciocnio quantitativo, raciocnio analgico, raciocnio combinatrio (OCDE, 2003), entre outros. A psicologia

97

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

oferece diversos instrumentos de avaliao para detectar quais as funes cognitivas ou tipos de competncias/raciocnios que um indivduo tem em dfice. Adequados faixa etria e competncias necessrias dos alunos em causa destacam-se as Matrizes Progressivas de Raven (Simes, 1995) e o PARC (Ribeiro e Almeida, 1999). O PARC, surgiu como complemento BPRD (Bateria de Provas de Raciocnio Diferencial) (Almeida, 1995) mas para jovens e jovens adultos incluindo, para alm de provas de raciocnio, outros processos cognitivos como a compreenso e o pensamento divergente. No entanto, estamos a iniciar um conjunto de experincias com o ABI Aptides Bsicas para Informtica (Cruz e Fonseca, 2002). Esta bateria de exerccios foi concebida especificamente para a avaliao de candidatos ou de profissionais da rea de informtica. Avalia a compreenso verbal (prova de compreenso verbal do tipo "sinnimos"), a compreenso de problemas e de conceitos matemticos (avalia a capacidade do sujeito para manipular smbolos matemticos e para resolver problemas numricos), a ateno e resistncia monotonia (avalia a ateno concentrada, mediante uma tarefa de deteco de erros num determinado contexto), o raciocnio lgico (prova de raciocnio em que os sujeitos devem encontrar, nas solues possveis, o nmero que continuaria a srie apresentada), a capacidade de classificao e de anlise (avalia um aspecto especfico da ateno: a capacidade para localizar elementos que esto misturados com outros e assinalar o cdigo correspondente) e a capacidade de organizao de fases lgicas, tambm denominada de prova de diagramas (avalia a capacidade para analisar um problema e para organizar solues numa srie de etapas lgicas). Adicionalmente tambm se pretende aplicar Testes de auto-estima e motivao. A sua pertinncia justifica-se dado que os alunos com dificuldades escolares tendem a ter uma imagem pessoal menos positiva, pouco favorvel aprendizagem e desempenho. Logo, ao identificarmos dfices desta ordem podemos realizar treinos cognitivos que visam proporcionar mudanas no mbito das expectativas e das percepes pessoais de competncia (Almeida e Balo, 1996 cit in Cruz e Fonseca, 2002), contribuindo desta forma para potenciar a aprendizagem. A motivao um factor que no pode, de forma alguma, ser esquecido. fundamental perceber os sentimentos e imagens dos alunos em relao s suas capacidades, sua realizao cognitiva e sua aprendizagem. Isto porque uma auto-estima, auto-conceito e expectativas de eficcia pouco positivas

vo ter influncia na motivao, entusiasmo e persistncia do aluno na realizao das tarefas implementadas no programa. Pretendemos ainda aplicar inventrios de atitudes e comportamentos habituais de estudo, como por exemplo o IACHE. Um aspecto relevante para o sucesso na aprendizagem de programao prende-se com os mtodos de estudo. Desta forma, pretende-se aplicar um instrumento deste tipo para perceber o tipo de abordagem da aprendizagem seguido prioritariamente pelos alunos com dificuldades: profunda (motivao intrnseca), de altorendimento (competio e maximizao do sucesso) ou superficial (motivao extrnseca, aprendizagem baseada na simples memorizao dos contedos). A aplicao de um dado teste cognitivo, permite identificar determinadas lacunas cognitivas no aluno, aps o que se pretende propor estratgias/testes para treinar as funes cognitivas em falta. A abordagem do treino cognitivo uma abordagem do processamento da informao com a finalidade de compreender as capacidades mentais, de um ponto de vista de treinabilidade dos processos cognitivos. Existem programas que treinam as funes cognitivas bsicas e superiores e outros que delimitam o campo de actuao a processos cognitivos mais especficos. No entanto, alguns autores defendem que os resultados deste tipo de abordagem s podem ser durveis se houver um treino ao nvel das metacomponentes (funes executivas, de ordem superior) e ao nvel das componentes de desempenho (processos de ordem inferior) (Cruz e Fonseca, 2002). A anlise e aplicao dos diversos testes referidos tem como intuito aferir o tipo de problemas a incluir no sistema. A incapacidade demonstrada pelo aluno em resolver um problema de determinado tipo, sugere a incluso no sistema de actividades de treino cognitivo que tambm se encontram em elaborao. 4.2. 2 Fase Demonstrao da programao atravs de um jogo Na segunda fase, pretende-se mostrar aos alunos para que serve e como se faz um programa. Para tal, ser ilustrado de forma interactiva o desenvolvimento e implementao de um jogo, procurando utilizar-se o carcter ldico para gerar um nvel de motivao superior. O jogo escolhido ser o jogo do galo, por ser um jogo bem conhecido e por ter sido o 1 jogo computacional. A estratgia de compreenso usada Top-Down, comeando
98

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

pelos conceitos mais gerais de um programa e atravs de um processo de anlise - por decomposio ou refinamentos sucessivos chegar-se ao detalhe. Comea-se assim pelo conhecimento do problema, um jogo conhecido do aluno. O jogo ser ilustrado recorrendo a 3 robots (bonecos animados) com funes distintas, nomeadamente: - robot-A- que ir ilustrar o jogo do ponto de vista do jogador. - robot-B que ir ilustrar a forma lgica (programao) de representao do jogo. - robot-C que ir ilustrar a forma fsica (armazenamento interno) de representao do jogo. A estratgia geral consiste em introduzir o robot-A que dialogar com o aluno sobre os diversos elementos constituintes do jogo, as diversas regras a respeitar, de forma a assegurar uma completa compreenso e correcto planeamento do jogo. Durante este processo o robot-A utilizar vrias metforas, recorrendo a animaes que mostram exemplos reais conhecidos do aluno que lhe facilitem a compreenso de diversos conceitos teis e permitam mais facilmente fazer a transio para o campo da implementao (funo do robot-B). ento da responsabilidade do robot-B a explicao de como fazer certas implementaes a um nvel lgico, nomeadamente quais as estruturas de programao que permitem representar o tabuleiro, os jogadores, situao de final de jogo, entre outras. Numa fase final e para um melhor entendimento das questes computacionais, ser possvel, atravs do robot-C mostrar a forma como os diversos acontecimentos se processam internamente (ao nvel da mquina). Desta maneira, o aluno pode concentrar-se inicialmente na lgica geral do programa, sem se preocupar com os pormenores sintcticos das instrues individuais. Este processo de planeamento pode ento ser repetido vrias vezes, com pormenores de programao adicionados em cada fase. Cada uma das fases inclui um questionamento permanente, onde so aplicadas as etapas mencionadas na literatura para uma correcta resoluo de problemas, a dificuldade gradual de apresentao de situaes de acordo com a Taxonomia de Bloom, no esquecendo os Estilos de Aprendizagem preferenciais de cada aluno.

4.3. 3 Fase Treino de programao A implementao desta fase pode ser conseguida, por exemplo utilizando o SICAS ou um ambiente similar. O SICAS possibilita, essencialmente, dois tipos de cenrios: edio/resoluo de problemas e execuo/simulao de resolues previamente construdas pelo aluno. No primeiro cenrio, o aluno pode construir algoritmos atravs de representaes visuais fluxogramas recorrendo a simbologia grfica que representa as principais estruturas necessrias construo de um algoritmo. No segundo cenrio, o utilizador pode simular a execuo das resolues construdas, analisando-as com o detalhe e ritmo desejado. O SICAS apresenta um conjunto de possibilidades de utilizao educativa que nos parecem relevantes. Destacamos a possibilidade de os alunos construrem e simularem os seus prprios algoritmos, analisando os respectivos resultados e corrigindo aspectos eventualmente menos conseguidos. Esta uma actividade de grande importncia para a aprendizagem dos fundamentos da programao, objectivo primeiro do desenvolvimento deste ambiente. Apesar de ter sido concebido para uma utilizao independente, este ambiente pode tambm suportar actividades em contexto de sala de aula, mesmo que o professor pretenda levar a cabo um conjunto de actividades mais controladas e especficas. O SICAS pode evidentemente ser utilizado em qualquer outro local, fora do horrio curricular, no mbito do estudo autnomo fundamental na aprendizagem da programao. Outro aspecto importante da utilizao do SICAS reside na possibilidade de, em utilizao autnoma e sem preocupaes classificativas, o aluno auto-avaliar os seus conhecimentos atravs da simulao e teste das suas resolues. Em particular, a possibilidade de verificar que o seu algoritmo se comporta correctamente com os testes especificados pelo professor (dados de entrada e resultados esperados) pode apresentar uma credibilidade superior, conferindo ao aluno um grau de confiana mais elevado no sistema e nas suas prprias capacidades. Outro aspecto importante reside na possibilidade de permitir ao professor criar conjuntos de exerccios resolvidos, constituindo assim mais um auxiliar para o estudo dos seus alunos. Claro que podem ser utilizadas diversas abordagens pedaggicas, como seja fornecer resolues correctas,
99

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

incorrectas ou ainda incompletas. Apesar de acharmos que analisar problemas resolvidos no se traduz inevitavelmente num aumento da capacidade de solucionar novos problemas, pensamos que pode ser interessante permitir aos alunos fazer alteraes s solues existentes ou propor e testar solues alternativas. Tambm a possibilidade de dar aos alunos algoritmos errados, em especial com o tipo de erros lgicos que o aluno em causa habitualmente apresenta, e pedir-lhe que procure e corrija esses erros, pode apresentar um alto valor educativo nesta rea. Outra caracterstica importante do SICAS a possibilidade de os alunos compararem algoritmos diferentes para um mesmo problema e verificarem quando que uns apresentam um desempenho superior aos outros, interiorizando assim gradualmente tcnicas eficazes de programao. O ambiente pode tambm ser utilizado numa inverso de papis, podendo ser pedido ao aluno para indicar o enunciado de um problema cuja resoluo lhe seja facultada (e que ele pode analisar com o SICAS). Destacamos ainda a possibilidade de o professor colocar problemas aos alunos e verificar o seu grau de proficincia atravs da anlise das solues por eles propostas. De acordo com esta perspectiva, possvel afirmar que o SICAS permite avaliar e individualizar as actividades desenvolvidas pelos alunos. Com este conhecimento, o professor pode propor actividades de acordo com os nveis actuais de conhecimentos de cada aluno, evitando propor problemas demasiado fceis ou difceis, o que geralmente se traduz em desmotivao dos alunos. Este aspecto acrescenta um conjunto de valores importantssimo aos mtodos de ensino tradicionais, na medida em que possibilita uma actividade de ensino/aprendizagem mais personalizada, contribuindo para que os alunos possam aprender ao seu prprio ritmo, aumentando a sua motivao, pois muitas vezes os factores que mais contribuem para o desinteresse dos alunos nas salas de aula a sua total incapacidade de acompanhamento dos exerccios que esto a ser abordados. claro que este objectivo poderia ser atingido por outros meios, mas pensamos que o SICAS pode proporcionar algum suporte a esta abordagem, necessariamente mais trabalhosa para o professor. Prev-se, no entanto, o melhoramento e incluso de novas funcionalidades, de que se destaca, por exemplo, proporcionar o desenvolvimento de actividades algortmicas que contemplem no apenas os

alunos visuais (atravs de fluxogramas) mas tambm os verbais (atravs de pseudocodigo). 5. CONCLUSO Face s dificuldades apresentadas pelos alunos inexperientes em programao, expomos neste artigo uma proposta que visa contribuir para ultrapassar parte destas dificuldades, apresentando uma abordagem que: - Contribua para o aumento da motivao do aluno, atravs de um ambiente ldico e estimulante, com companheiros/tutores sempre bem dispostos e muito pacientes. - Inclua animaes e modelos dinmicos que melhor representem os vrios conceitos de programao. - Apresente e proponha actividades de acordo com o estilo de aprendizagem preferencial de cada aluno e de acordo com o seu ritmo e estado cognitivo. - Oferea uma abordagem gradual de apresentao da programao treinando, em primeiro lugar competncias bsicas de resoluo de problemas, de planeamento de solues e mostrando a utilidade da programao, deixando para mais tarde os detalhes sintcticos das linguagens de programao - Minimize, pelo menos inicialmente, os complexos detalhes sintcticos de uma linguagem de programao. - Utilize metforas e exemplos concretos conhecidos do aluno para ajudar a diminuir a carga abstracta inerentemente associada programao. - Exiba um ambiente estruturado que assegure metodologias de estudo correctas que levem reflexo e questionamento permanente. - Permita um treino intensivo de resoluo de problemas, obrigando o aluno a seguir todas as etapas para uma correcta resoluo de problemas, que se resumem compreenso do problema, caracterizao do problema, representao do problema, soluo do problema e reflexo sobre a soluo obtida.

100

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

- Permita um treino intensivo de conhecimentos matemticos e lgicos teis programao. - Possibilite que os alunos ganhem uma certa experincia em programao, dando-lhe sugestes para atingir determinadas solues, propondo actividades diversificadas (programas completos para os alunos analisarem, programas que contenham erros lgicos habitualmente cometidos pelos alunos, programas incompletos para completar, entre outras actividades), apresentando modelos de forma a que os alunos adquiram as melhores prticas de programao. 6. REFERNCIAS BIBLIOGRFICAS ALMEIDA, L. (1995). Bateria de Provas de Raciocnio Diferencial (BPRD). In L. Almeida, M. Simes & M. Gonalves (ed.), Provas psicolgicas em Portugal, vol.1, p.19-28. Braga: APPORT. ALMEIDA, E. S., COSTA, E. B., BRAGA, J. D. H., SILVA, K. S., PAES, R. B. e ALMEIDA, A. A. M. (2002). AMBAP: Um Ambiente de Apoio ao Aprendizado de Programao. In X Workshop sobre Educao em Computao, Florianpolis. Anais do WEI 2002/ SBC2002. AREIAS, C. (2007). ProGuide: Sistema de acompanhamento na resoluo de problemas bsicos de programao. Tese de Mestrado em Engenharia Informtica, Universidade de Coimbra. BEREITER, C. and NG., E. (1991). Three Levels of Goal Orientation in Learning. In Journal of the Learning Sciences, n 3, (vol. 1), 243-271. BLOOM, B. S. and KRATHWOHL, D. R. (1956). Taxonomy of Educational Objectives, Handbook I: Cognitive Domain. Longmans, Green and Company. BRIGGS-MYERS, I. and MCCAULLEY, M. H. (1985). Manual: A Guide to the Development and Use of the Myers-Briggs Type Indicator. Palo Alto, CA: Consulting Psychologists Press. BYRNE, P. and LYONS, G. (2001). The Effect of Student Attributes on Success in Programming. In Proceedings of the 6th Annual Conference

on Innovation and Technology in Computer Science Education - ITiCSE 2001, United Kingdom, p.49-52. CRUZ, V. and FONSECA, C. (2002). Educao Cognitiva e Aprendizagem. Porto Editora, Porto. CRUZ, M. Aptides Bsicas para Informtica (ABI), Available in http://www.cegoc.pt/testes/catalogo/testes.asp?Tema=25 DIJKSTRA, Edsger W. (1989). On the Cruelty of Really Teaching Computing Science. In Communications of ACM, Issue 12, (vol.32), 1398-1404. DUNICAN, E. (2002). Making The Analogy: Alternative Delivery Techniques for First Year Programming Courses. In 14th Workshop of the Psychology of Programming Interest Group, Brunel University, p.8999, In J. Kuljis, L. Baldwin & R. Scoble (Eds). ESTEVES, M. and MENDES, A. (2004). A Simulation Tool to Help Learning of Object Oriented Programming Basics. In Proceedings of the 34th ASEE/IEEE Frontiers in Education Conference. FELDER, R. M. (1988). Learning and Teaching Styles in Engineering Education. In Journal of Engineering Education, n 7, (vol. 78), 674-681. GOMES, A. e MENDES, A. J. (2001). SICAS: Interactive system for algorithm development and simulation. In Manuel Ortega y Jos Bravo (Ed.), Computers and Education in an Interconnected Society, Kluwer Academic Publishers, p.159-166. GOMES, A. (2002). Ambiente de suporte aprendizagem de conceitos bsicos de programao. Tese de Mestrado em Engenharia Informtica, Faculdade de Cincias e Tecnologia da Universidade de Coimbra. GOMES, A., CARMO, L., BIGOTTE, E. and MENDES, A. J. (2006). Mathematics and programming problem solving, in Proceedings of 3rd E-Learning Conference Computer Science Education, Coimbra, Portugal [CD-ROM].

101

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

JENKINS, T. (2002). On the difficulty of learning to program. In Proceedings of 3rd Annual LTSN_ICS Conference (Loughborough University, United Kingdom, August 27-29, 2002). The Higher Education Academy, p.53-58. JNIOR, J. C. R. P. e RAPKIEWICZ, C. E. (2004). O Processo de Ensino e Aprendizagem de Algoritmos e Programao: Uma Viso Crtica da Literatura. In III Workshop de Educao em Computao e Informtica do estado de Minas Gerais (WEIMIG 2004). Belo Horizonte, MG, Brasil. JNIOR, J. C. R. P., RAPKIEWICZ, C. E., Delgado, C. e Xexeo, J. A. M. (2005). Ensino de Algoritmos e Programao: Uma Experincia no Nvel Mdio. In XIII Workshop de Educao em Computao (WEI2005). So Leopoldo, RS, Brasil. KOLB, D. A. (1985). Learning Style Inventory: Technical Manual. McBer and Company, Boston. MENDES, A. J. e MENDES, T. (1988). VIP A Tool to VIsualize programming examples. In Proceedings of Education and Application of Computer Technology, p.131-140. Motil, J. and Epstein, D. (2000). JJ: a Language Designed for Beginners (Less Is More). Available at http://www.ecs.csun.edu/jmotil/TeachingWithJJ.pdf Myers, I. B. and McCaulley, M. H. (1985). Manual: A Guide to the Development and Use of the Myers Briggs Type Indicator. Palo Alto, CA, Consulting Psychologists Press. OECD (Organisation for Economic Co-operation and Development). Learning for tomorrows world. First results from PISA 2003, Paris, available in http://www.pisa.oecd.org/dataoecd/38/30/33707234.pdf PEA, R. D. and KURLAND, D. M. (1984). On the Cognitive and Educational Benefits of Teaching Children Programming: A Critical Look. New Ideas in Psychology, n 2, p.147-168.

PERKINS, D. N., SCHWARTZ, S. and SIMMONS, R.; (1988). Instructional Strategies for the Problems of Novice Programmers. In R. E. Mayer (ed.), Teaching and Learning Computer Programming, p.153-178. Hillsdale, NJ: Lawrence Erlbaum Associates. REBELO, B. (2007). SICAS-COL - Um Sistema Colaborativo para Aprendizagem Inicial da Programao. Tese de Mestrado em Engenharia Informtica, Universidade de Coimbra. RIBEIRO, I. & ALMEIDA, L. (1999). Provas de avaliao da realizao cognitiva (P. A. R. C.). Iin M. Simes, M. Gonalves & L. Almeida (ed.), Testes e provas psicolgicas em Portugal, vol.2, p.71-79. Braga: APPORT/SHO. Simes, M. (1995). Portuguese standardisation of the Ravens Coloured Progressive Matrices: An overview of item analyses, reliability, validity and norming studies. In Proceedings of 3rd European Conference on Psychological Assessment, Trier, Germany. SLOANE, K. D. and LINN, M. C. (1988). Instructional Conditions in Pascal Programming Classes. In R. E. Mayer (ed.), Teaching and Learning Computer Programming, p.207-235. Hillsdale, NJ: Lawrence Erlbaum Associates.

102

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

Abstract: The high failure rate in introductory programming courses, where basic programming concepts are taught, is a universal problem that has motivated several authors to investigate the causes of those difficulties. Several tools have been proposed to help students learn programming. Although some of these tools have been reported to have a positive effect in student learning, the problem remains almost the same. From our point of view there are several reasons that cause that problem. We consider that the study and teaching methods are not suitable, the students lack previous preparation on problem solving. We also consider that the nature of the subject is complex and that students have lack of motivation in studying for these subjects. We think that the traditional methodologies to teach and learn these subjects are not enough nor appropriate. So we propose a new tool, focused on problem solving, providing a set of suitable activities according to the students cognitive needs and knowledge level, also supporting students with different backgrounds and learning styles. Key-words: Programming Learning, Learning Styles, Psychology of Programming.

Texto - Submetido em Fevereiro de 2008 - Aprovado em Maro de 2008

Como citar este texto: GOMES, A., HENRIQUES, J., MENDES, A. J. (2008). Uma proposta para ajudar alunos com dificuldades na aprendizagem inicial de programao de computadores. In Educao, Formao & Tecnoloigias; vol.1(1), pp. 93103. Disponvel em http://eft.educom.pt

103

You might also like