Como motivar o aluno nas disciplinas introdutórias da área de programação?

Vários cursos, das mais variadas áreas do conhecimento, possuem em sua estrutura curricular a disciplina de lógica de programação, na qual esta trabalha, basicamente, com o ensino de algoritmos e linguagens de programação. Na maioria das universidades, centros universitários e faculdades isoladas o ensino, direcionado pela disciplina em questão, está focado predominantemente no paradigma estruturado aliado a utilização de linguagens procedurais como C e Pascal. Um fato chama a atenção nestas disciplinas: A QUANTIDADE DE REPROVAS OU DESISTÊNCIAS. Os dados apresentados a seguir comprovam minha afirmação:

·          Os cursos de lógica de programação iniciam com uma média de 50 alunos e em poucos meses, constata-se que taxa de reprovação (ou desistência) chega a 60% (dados extraído de Rocha (1993)).

·          Os dados delineados por Rocha (1993) são compartilhados pelas instituições que apadrinham o autor deste texto, a Fundação Educacional do Município de Assis (www.femanet.com.br) e a Faculdade de Tecnologia de Ourinhos (www.fatecou.edu.br), vejam só:

o     Faculdade de Tecnologia de Ourinhos – Ingressantes: 200 alunos. Concluintes: cerca de 50%.

o     Fundação Educacional do Município de Assis – Ingressantes: 70 alunos. Concluintes: cerca de 55%.

Com base nos números apresentados é possível constatar que nós professores estamos com um problema eminente nas mãos.  Será que existem meios que possibilitem o ensino de lógica de programação com mais eficiência e eficácia? As linguagens e o paradigma nos cursos de lógica de programação são adequados ao ensino? Como motivar o aluno dentro das disciplinas introdutórias da área de programação? Alguns trabalhos buscam constantemente uma solução para estas questões, entre eles é possível citar Baranauskas (1993), Fernandes et. al. (2000), Fernandes e Menezes (2001) e Prus (2001). Vale à pena dar uma olhada neles.

Neste texto gostaria de tratar uma questão em especial: a motivação dos alunos nas disciplinas introdutórias de programação.

É de conhecimento da comunidade que os alunos ingressantes nos cursos, de computação, nasceram na era da informação, tem um contato estreito com diversas mídias, e seu raciocínio não é linear. Alguns fatos chamam a atenção na formação básica destes alunos, destaco três deles, fique a vontade para apresentar um número maior:

·          A leitura não é um hábito cultivado sistematicamente. Em uma pesquisa feita com meus alunos pude constatar que cerca de 90% não leram livro algum em 2007.

·          A maioria dos alunos não possui o hábito de passar horas e horas estudando. A necessidade de estudar algumas horas durante todos os dias não é uma idéia bem aceita entre eles.

·          Adoram jogar, isto mesmo, trabalhamos com a geração dos jogos digitais.

Ao contrapor os itens citados às características que permeiam as disciplinas introdutórias da área de programação esbarramos na seguinte “regra de produção”.

SE os alunos não possuem o hábito de ler E não passam horas estudando ENTÃO os cursos de lógica de programação possuem altos índices de reprovação ou abandonos.

(A regra de produção está contextualizada para o ensino de lógica de programação. Será que ela pode ser generalizada?).

Para que a regra apresentada não seja disparada, é necessário que nós professores motivemos nossos alunos. Parto do seguinte premissa: as tarefas mais interessantes são menos árduas de realizar. Dentro deste contexto desenvolvi uma experiência junto aos alunos do primeiro ano, do curso de Análise de Sistemas e Tecnologias da Informação, da FATEC de Ourinhos, tal experiência é baseada no trabalho “O Ensino de Lógica de Programação e o Desenvolvimento de Jogos Educacionais: Um Caso Aplicado aos Alunos do Curso de Licenciatura Plena em Matemática”, publicado no final do ano de 2007. Para contextualizar a idéia de algoritmo, propus aos alunos o desenvolvimento de um jogo. Apresentei, a eles, em 6 horas, o conceito básico de algoritmo e alguns comandos da linguagem logo (logo é caracterizada como uma linguagem interpretada voltada, principalmente, para o ensino de crianças e aprendizes em programação, para maiores informações faça o download em www.nied.unicamp.br/publicacoes/pub.php?classe=software&cod_publicacao=70). E, por fim, incentivei-os a desenvolver um jogo para ensinar matemática e aritmética para crianças.

Para o desenvolvimento do jogo estabeleci o seguinte processo:

1.     Atividade 1 – Desenvolvimento e validação, junto ao professor, da interface do jogo.

2.     Atividade 2 – Programação do jogo. Importante: Os conceitos de testes formais não foram abordados.

Após terminar o desenvolvimento, propus os alunos que apresentassem os seus joguinhos em uma seção pública, veja só alguns resultados:

·          Jogo 1: Passeio com a TAT. Objetivo: Fazer com que a TAT leve seus amiguinhos para passear, utilizando meios como distância e ângulos. Os comandos utilizados nesse jogo é pf (para frente); pt (para trás); pe (para esquerda) e pd (para direita). Público alvo: Criança alfabetizadas. Autoras: Camila, Lorena, Marija e Tamirys.

·          Jogo 2: Super Turtle 2008. Objetivos: Cada participante terá que levar a sua tartaruga até o fim do tabuleiro. O jogo é para dois jogadores. Público alvo: Crianças alfabetizadas. Autores: Cleiton, Carla e Karoline.

·          Jogo 3: Caça ao Tesouro. Objetivos: Levar a tartaruga TAT ao mapa, a chave, a pá e ao tesouro. Público alvo: Crianças alfabetizadas.  Autores: Rafael, Julcimar, Rodrigo e Rodrigo Mascari.

As interfaces dos jogos 1, 2 e 3 podem ser verificadas no arquivo Interface dos jogos.

Com o desenvolvimento dos jogos foram colhidos alguns resultados resultado qualitativos, detaco alguns deles::

1.    Aumento da motivação do aluno para com a disciplina. Os alunos questionam se é possível fazer algo mais elaborado com a linguagem C. Respondo que sim, porém é necessário, neste momento, termos uma boa “alfabetização algorítmica”.

2.     Aumento do conhecimento e habilidades dos alunos dentro da área de lógica programação. O programa de computador foi desmistificado logo no início da disciplina.

3.     Expectativa de continuidade dos estudos dentro da área de desenvolvimento de jogos educacionais, principalmente, nos próximos anos da faculdade.

4.     O aluno tem consciência que para produzir um programa é necessário algumas horas de estudo.

A experiência apresentada encontra-se em um estágio inicial, resultados quantitativos relacionados ao número de desistências e reprovas só serão obtidos no final deste semestre. Fica a sugestão para os professores trabalharem com produção de um jogo logo no início da disciplina de programação. Por favor, não se esqueça de estabelecer um processo de produção para trabalhar com este tipo de desenvolvimento.

José Augusto Fabri

Referências

Rocha, H. V. (1993). Representações Computacionais Auxiliares ao Entendimento de Conceitos de Programação. In: “Computadores e Conhecimento: Repensando a Educação”. Livro organizado por Valente, J. A. Editora Unicamp.

Prus, E. M. (2001). “Um Modelo de Sistema Tutor Inteligente Aplicado ao Ensino da Programação Estruturada”. Dissertação de mestrado ao Departamento de Engenharia de Produção e Sistemas da Universidade Federal de Santa Catarina.

Baranauskas, M. C. C. (1993). Uma Abordagem Construcionista ao Design de um Ambiente para Programação em Lógica. In: “Computadores e Conhecimento: Repensando a Educação”. Livro organizado por Valente, J. A. Editora Unicamp.

Fernandes, C. S.; Menezes, P. B. (2001) Metodologia do Ensino de Ciência da Computação: Uma Proposta Para Criança. In: “Anais do Workshop de Informática na Escola”. Fortaleza – Ceará.

Fernandes, C. S., Menezes, P. B., Accorsi, F. (2000) A Propose of Teaching Computer Sciencefor Children. In: “Internacional Conference on Engineering and Computer Education – ICECE”, São Paulo.

Fabri. J. A. O Ensino de Lógica de Programação e o Desenvolvimento de Jogos Educacionais: Um Caso Aplicado aos Alunos do Curso de Licenciatura Plena em Matemática. In Anais do Simpósio Brasileiro de Informática na Educação. São Paulo, 2007.

8 Responses to “Como motivar o aluno nas disciplinas introdutórias da área de programação?”

  1. Interessantíssimo!! Sou defensora da idéia de que a prática estimula o interesse pelo aprendizado, fazendo com que a aula não seja centrada apenas no ensino (palavra usada aqui com a acepção de mera transmissão de informação). Fiz um curso na empresa FESTO, ligada à automação industrial e localizada em São Bernardo do Campo. A empresa tem um departamento didático que oferece cursos à comunidade externa. Segundo seus coordenadores, a partir do momento em que o departamento passou a utilizar softwares de simulação nas aulas, a carga horária dos cursos pôde ser reduzida quase que pela metade e o nível de aproveitamento dobrou! Não defendo aqui essa redução, mas é interessante verificar que procedimentos similares ao utilizado pelo prof. Guto estão dando resultados em outros lugares.
    Lia

  2. Havia escrito outro comentario porém na hora de enviar o site retornou a mensagem de que eu havia escrito meu comentário muito rápido. Que porcaria de algoritmo julgou isto? Bom reclamação feita. Eu acredito que a falta de interesse nas disciplinas iniciais se relaciona também a falta de curiosidade sobre o desenvolvimento de software. E a dificuldade de vislumbrar a utilização prática dos conceitos iniciais de programação. Curso Sistema de Informação e tenho na grade a disciplina programação 1, onde os conceito de programação estruturadas são ensinadas na linguagem Pascal. Percebi em minha classe o melhor desempenho nesta disciplina de pessoas que já tiveram a curiosidade por exemplo de criar um website.

    http://codigosfonte.wordpress.com

  3. […] da linguagem Logo e o desenvolvimento de jogos na Faculdade de Tecnologia de Ourinhos (FATEC-OU) (https://engenhariasoftware.wordpress.com/2008/04/15/como-motivar-o-aluno-nas-disciplinas-introdutoria…). De lá para cá, vários colegas compartilharam as suas experiências e ferramentas aplicadas em […]

  4. Excelente iniciativa! Parabéns!

  5. Eliana Feo Says:

    São várias as causas do fracasso de um aprendiz. Elas podem estar nele, no instrutor ou ainda no ambiente ou tecnologia de ensino utilizada. No primeiro caso, falta no aprendiz os esquemas básicos para o aprendizado, como sabemos a formação básica do brasileiro não é boa, pesquisas revelam nosso mau desempenho em Português e Matemática. No segundo caso, ou o instrutor não apresenta capacitação para o ensino ou a comunicação entre ele e o aprendiz pode conter muitos ruídos, ou seja, é necessário descobrir quais são esses ruídos (linguagem erudita demais, falta de empatia, …) e eliminá-los. No terceiro caso, é possível que o ambiente seja inadequado como: salas com excesso de alunos, desconfortável ou ainda com opção de tecnologia de ensino inadequada.
    Então, as soluções também são várias. Pode-se trabalhar na recuperação da formação do aluno, na capacitação do professor e, ainda, na adequação do ambiente e tecnologia empregadas, simultaneamente. Ou seja, acredito que não dá para resolver o problema atuando somente e uma das múltiplas causas. Sem planejamento, comprometimento e liderança os resultados ficam prejudicados.

  6. O ensino de algoritmos ainda é algo tragico e pouco produtivo. Embora seja uma materia de suma importancia e bastante facinante eu acho que a metodologia baseada em desafios pode ser mais interessante. Este metodo pessoal meu vem surtindo efeitos beneficos com meus alunos.

    Partimos que os computadores manipulam somente bits. Um byte possui 8 bits e um char é representado por 8 bits (Um byte)

    Uma frase é um conjunto de letras e numeros, ou seja uma matriz de caracteres ou um array de bytes.

    A grande armadilha é a matemática envolvida no processo. Uma Matriz ou conjunto ou array é a mesma coisa. Como ler uma matriz?

    Para isso o aluno tem que ter alguns pre-requisitos: Saber laços de repeticao. Saber o que é um array e saber o que são bytes e caracteres, ou seja, saber tipos basicos de dados.

    Sabemos que muitos alunos nao gostam muito de matemática, eu sou um deles.
    Sabemos que a qualidade do conhecimento da maioria dos alunos nao é satisfatória. Ou seja, muitos alunos nao sabem o que é um array, nao sabem explicar que um caractere é um byte que é um conjunto de bits.

    Precisamos de um objetivo ou algum premio pelo esforço do aluno para as tarefas propostas. No caso a metodologia do Desafio pode ser bem interessante. Aplicado no evento acima, O curso de algoritmos deve ter um objetivo como, criar uma aplicacao importante como um jogo. Criar jogos digitais sao tarefas que trazem bons resultados sempre. Entao o curso de algoritmos deve ter um objetivo como criar um jogo onde todos os alunos devem cooperar.

    Cada tarefa da criacao de um jogo tem seus pré requisitos e tem pequenos objetivos (A velha tarefa de Dividir para Conquistar)

    Exemplo:

    Pegar o nome do jogador digitado e colocar toda a string em Maiuscula.
    (Embora as linguagens de programacao tenham funcoes prontas neste sentido, explicar a mecanica da coisa é importante ferramenta para o ensino de algoritmos).

    Pre-Requisitos (Cada tarefa tem prerequisitos, como exemplo o objetivo anterior conquistado)

    Saber o que é um byte
    saber o que é um caractere
    Saber o que é uma String.

    Referencias: (material de pesquisa) como apostilas e aula

    O aluno deve consultar o material de pesquisa e aprender como pegar caractere por caractere de uma string (nome) e converter em maiuscula (Subtraindo do valor do caractere o valor da diferenca entre o caractere Minusculo para o Maiusculo) Existe os problemas deste algoritmo como por exemplo Detectar que o caractere JA é maiusculo e nao fazer nada, talvez ignorar caracteres invalidos ou numeros, desprezando ou nao)
    e recompor na saida a frase modificada.

    Esta abordagem ja trata dos possiveis erros no programa antes de ocorrerem alem de dar ao aluno a visao de correcao de erros e desenvolver pensando em todas as variaveis ou seja o teste de software.

    Após a conclusao da tarefa por grupos de alunos os desafios sao trocados e testados pelos grupos (Grupo 1 testa o codigo do Grupo2 e verifica se funciona corretamente)

    Essa interacao entre os integrantes do grupo (que se reune para um objetivo maior) permite que os alunos ja treinem o trabalho em equipe.

    Com o compromentimento dos alunos e a interacao, sabendo que cada etapa do projeto é importante. Creio que esta metodologia possa ser utilizada para o ensino de algoritmos.

    Nao possuo formação academica necessaria para defender minha tese, sou apenas um técnico eletronico que ensina programacao via web. Mas acho que este meu post pode ser um ponto de partida para uma materia neste blog ou talvez minha técnica possa ser aprimorada e talvez possa servir como metodologia de diciplina.

    Utilizo uma variacao deste sistema no treinamento que ministro via web.

    Qualquer um que queira discutir comigo sobre esta metodologia ou talvez me guiar na area pode me encontrar no msn: perobaqueiroz no hot mail ponto com. (algortmo bom para evitar bots cacadores de email nao?)

  7. […] Trabalho com a disciplina de Algoritmos e Estrutura de Dados I, meu plano de ensino contempla o ensino da linguagem C (nota: nesta disciplina existem outros professores, não tenho pleno poder de decisão sobre o plano). É interessante ensinar C? Será que um compilador portugol não seria menos indigesto para os alunos? Como minimizar o número de reprovações nestas disciplinas? Fiz algumas experiências e materializei-as neste post. […]

  8. Prezado José Fabri,
    interessante seu post.
    Alguns professores acreditam que ensinar a programar se faz escrevendo “portugol” com palavras reservadas sublinhadas. Isso obviamente não funciona pois programar é uma habilidade e não um conceito, dependendo de construção de esquemas internos mais complexos que memorização pura de vocabulário e um punhado de regras. Daí usar ferramentas como Alice, Scratch, Karel ser mais apropriado.
    Trabalho com jogos em programação há algum tempo, é divertido para alunos e professores. É mais concreto mover um objeto na tela do que calcular fatorial. E é mais rico controlar velocidade na tela, enquanto problema, do que construir um cadastro.
    Clua lançou um livro sobre o assunto. E podemos trocar experiências também. Abraço e sucesso.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: