Download PDF
ads:
AVEP - UM AMBIENTE VIRTUAL PARA APOIO AO ENSINO DE
ALGORITMOS E PROGRAMAÇÃO
JOSÉ CARLOS ROCHA PEREIRA JÚNIOR
UNIVERSIDADE ESTADUAL DO NORTE FLUMINENSE – UENF
CAMPOS DOS GOYTACAZES – RJ
JUNHO – 2006
ads:
Livros Grátis
http://www.livrosgratis.com.br
Milhares de livros grátis para download.
ii
AVEP - UM AMBIENTE VIRTUAL PARA APOIO AO ENSINO DE
ALGORITMOS E PROGRAMAÇÃO
JOSÉ CARLOS ROCHA PEREIRA JÚNIOR
“Dissertação apresentada ao Centro de Ciências e
Tecnologia da Universidade Estadual do Norte
Fluminense, como parte das exigências para
obtenção do título de Mestre em Engenharia de
Produção”.
Orientadora: Clevi Elena Rapkiewicz, D.Sc.
CAMPOS DOS GOYTACAZES – RJ
JUNHO – 2006
ads:
iii
AVEP - UM AMBIENTE VIRTUAL PARA APOIO AO ENSINO DE
ALGORITMOS E PROGRAMAÇÃO
JOSÉ CARLOS ROCHA PEREIRA JÚNIOR
“Dissertação apresentada ao Centro de Ciências e
Tecnologia da Universidade Estadual do Norte
Fluminense, como parte das exigências para
obtenção do título de Mestre em Engenharia de
Produção”.
Aprovada em 10 de junho de 2006.
Comissão Examinadora:
_____________________________________________
Prof.ª Annabell del Real Tamariz, D.Sc. - UCAM
_____________________________________________
Prof.ª Sahudy Montenegro González, D.Sc. - UCAM
_____________________________________________
Prof. Lacir Jorge Soares, D.Sc. - UENF
_____________________________________________
Prof.ª Clevi Elena Rapkiewicz, D.Sc. - UENF
Orientadora
iv
DEDICATÓRIA
Aos meus pais e a minha esposa, Isabel Cristina,
que são presentes de Deus.
v
AGRADECIMENTOS
A Deus, Senhor da minha existência, pela oportunidade de desenvolver este
trabalho.
Aos meus pais, pela formação e carinho que me deram.
A minha esposa, pelo incentivo em todos os momentos desta caminhada.
A minha orientadora, Clevi Elena Rapkiewicz, pela amizade, paciência e dedicação
para a concretização deste trabalho e pelo tanto que me fez crescer
profissionalmente e como pessoa.
Á Equipe que se empenhou no desenvolvimento dos jogos utilizados neste trabalho.
À Carla Delgado, pela colaboração com material didático e suporte para aplicação
da estratégia utilizada.
A minha tia Silvane e a Maria Valdete, ambas são professoras do Colégio Estadual
Baltazar Carneiro, pelo apoio para a realização de uma oficina nesta instituição de
ensino.
Ao professor José Antônio Xexeo e à Unibennett, pela disponibilidade para
realização da uma outra oficina.
A todos os colegas do mestrado e funcionários da UENF, pelo companheirismo e
pelas colaborações.
Aos membros da banca por compartilharem suas experiências profissionais na
avaliação desta dissertação.
A CAPES e a todos de maneira geral que, direta ou indiretamente, contribuíram para
a concretização desse trabalho.
vi
SUMÁRIO
RESUMO................................................................................................................. VIII
ABSTRACT............................................................................................................... IX
LISTA DE FIGURAS.................................................................................................. X
LISTA DE TABELAS............................................................................................... XII
LISTA DE TERMOS................................................................................................ XIII
CAPÍTULO 1 – INTRODUÇÃO...................................................................................1
1.1 CONTEXTO...........................................................................................................1
1.2 DEFINIÇÃO DO PROBLEMA E MOTIVAÇÃO DO TRABALHO ..........................................4
1.3 OBJETIVOS ..........................................................................................................5
1.4 JUSTIFICATIVA......................................................................................................5
1.5 ESTRUTURA DA DISSERTAÇÃO...............................................................................6
CAPÍTULO 2 – ANÁLISE CRÍTICA DA LITERATURA..............................................7
2.1 ALGUNS DESAFIOS RELATIVOS AO PROCESSO DE ENSINO E APRENDIZAGEM DE
ALGORITMOS E PROGRAMAÇÃO...................................................................................9
2.2 PROPOSTAS NA LITERATURA PARA MINIMIZAÇÃO DOS PROBLEMAS.........................12
2.2.1.
FERRAMENTAS ........................................................................................13
2.2.2.
ESTRATÉGIAS..........................................................................................27
2.3. UMA ANÁLISE CRÍTICA DA LITERATURA................................................................31
CAPÍTULO 3 – UMA METODOLOGIA PARA ENSINAR PROGRAMAÇÃO...........35
3.1.
A METODOLOGIA...............................................................................................38
3.1.1. AS FASES ...............................................................................................41
3.1.1.1.
PRIMEIRA FASE INICIAÇÃO LÚDICA RESOLUÇÃO DE PROBLEMAS
.............................................................................................................41
3.1.1.2. SEGUNDA FASE FALANDO SÉRIO FORMALIZAÇÃO....................45
3.1.1.3. TERCEIRA FASE E AGORA? CONSTRUÇÃO DE PROGRAMAS......49
3.2. A PROPOSTA DO GRUPO DE TRABALHO SOBRE LICENCIATURA EM COMPUTAÇÃO ...51
3.3. O PROJETO DE UMA OFICINA ..............................................................................53
3.4. ANÁLISES DE RESULTADOS OBTIDOS ..................................................................55
CAPÍTULO 4 – O AMBIENTE VIRTUAL PARA ENSINO DE PROGRAMAÇÃO....59
4.1.
O AMBIENTE VIRTUAL PARA ENSINO DE PROGRAMAÇÃO (AVEP) ..........................60
4.1.1.
ATORES..................................................................................................63
4.1.1.1. ADMINISTRADOR ........................................................................63
4.1.1.2. TUTOR ......................................................................................65
4.1.1.3. ALUNO ......................................................................................70
vii
4.2. COMPONENTES .................................................................................................71
4.2.1. COMPONENTES DE APRENDIZAGEM...........................................................73
4.2.1.1. FASE 1 “RESOLUÇÃO DE PROBLEMAS......................................76
4.2.1.2. FASE 2 “FORMALIZAÇÃO.........................................................78
4.2.1.3. FASE 3 “CONSTRUÇÃO DE PROGRAMAS...................................80
4.2.2. COMPONENTES DE COMUNICAÇÃO............................................................81
4.2.3. COMPONENTE DE ARMAZENAMENTO .........................................................83
4.3. VALIDAÇÃO DO AMBIENTE ..................................................................................84
CAPÍTULO 5 – CONSIDERAÇÕES FINAIS.............................................................89
5.1. CONTRIBUIÇÕES................................................................................................91
5.2. DIFICULDADES...................................................................................................92
5.3. TRABALHOS FUTUROS .......................................................................................93
REFERÊNCIAS BIBLIOGRÁFICAS.........................................................................95
REFERÊNCIAS BIBLIOGRÁFICAS COMPLEMENTARES...................................100
ANEXO I - UMA PROPOSTA PARA A MATRIZ CURRICULAR ...........................106
ANEXO II - FICHA DE AVALIAÇÃO DO AVEP.....................................................109
viii
Resumo da dissertação apresentada ao CCT/UENF como parte integrante dos
requisitos necessários para a obtenção do grau de Mestre (M.Sc.) em Engenharia de
Produção.
AVEP - UM AMBIENTE VIRTUAL PARA APOIO AO ENSINO DE
ALGORITMOS E PROGRAMAÇÃO
José Carlos Rocha Pereira Júnior
10 de Junho de 2006
Orientadora: Clevi Elena Rapkiewicz, D.Sc.
Durante o processo de ensino e aprendizagem de algoritmos e programação
presentes em cursos de computação e engenharia nota-se que grande parte dos
alunos apresenta muitas dificuldades. A partir de uma análise da literatura sobre os
problemas inerentes e propostas de solução, verificou-se que melhores resultados
são obtidos quando se agrega ferramentas computacionais à uma estratégia de
ensino.
Seguindo esta tendência foi desenvolvido o Ambiente Virtual para Ensino de
Programação (AVEP) que, agregando um conjunto de ferramentas, visa guiar uma
estratégia baseada na resolução de problemas que tem obtido bons resultados.
O ambiente foi validado através de um curso a distância com 16 alunos de
graduação em computação dos quais 8 obtiveram aproveitamento acima de 70%.
Com isto, pode-se sugerir que os alunos estão adquirindo as competências
propostas com o uso do ambiente.
ix
Abstract of the dissertation presented to the CCT/UENF as an integrant part of the
necessary requirements for the achievement of the Master degree (M.Sc.) in
Production Engineering.
AVEP - A VIRTUAL ENVIRONMENT FOR SUPPORT TO THE
ALGORITHMS AND PROGRAMMING TEACHING
José Carlos Rocha Pereira Júnior
June 10, 2006
Advisor: Prof. Clevi Elena Rapkiewicz
During the process of teaching and learning algorithms and programming that are
present in computer sciences and engineering courses it can see that a great part of
the students has many difficulties. From a literature analysis about inherent problems
and solution proposals, it was verified that better results are gotten by adding
computational tools along with teaching strategy.
Following this trend a Virtual Environment for Programming Teaching (AVEP) was
developed that, adding a set of tools, aims at guiding a problem-based strategy that
has gotten good results.
The environment was validated through a distance course with 16 computer science
undergraduation students of whom 8 had gotten exploitation above 70%. With this, it
can be suggested that students are acquiring the abilities proposals with the use of
the environment.
x
LISTA DE FIGURAS
2.1: Levantamento da literatura nacional e internacional (105 artigos) .......................8
2.2: Formas mais utilizadas de representação algorítmica. ......................................15
2.3: Constructor.........................................................................................................18
2.4: Aplicação Web para realizar Teste de Mesa em Algoritmos..............................19
2.5: Ambiente para Teste de Mesa Utilizando Fluxograma.......................................20
2.6: Portugol/Plus......................................................................................................20
2.7: HabiPro ..............................................................................................................21
2.8: ILA......................................................................................................................22
2.9: BACCII++...........................................................................................................23
2.10: FLINT ...............................................................................................................23
2.11: Pascal-Logo .....................................................................................................24
2.12: Ambiente de Aprendizagem Adaptado para Algoritmos (A4)...........................26
2.13: Ambiente Cooperativo de Aprendizagem.........................................................27
2.14: Vertentes das soluções para o problema do ensino de algoritmos e
programação (105 artigos)........................................................................................31
2.15: Publicações sobre o Ensino de Fundamentos de Programação no WEI e SBIE
– 1999 a 2003 ...........................................................................................................33
2.16: Foco das publicações dos eventos em 2001 e 2003.......................................34
3.1: Jogo “Histórias das 1001 Noites” .......................................................................44
3.2: Fórum na Internet...............................................................................................46
3.3: Ferramenta ‘Turbo Pascal’.................................................................................50
3.4: Gráfico da Freqüência diária na oficina..............................................................56
4.1. Tela de abertura do AVEP..................................................................................61
4.2. Arquitetura do AVEP ..........................................................................................62
4.3. Ações do Administrador .....................................................................................64
xi
4.4. Gerência de Tutores...........................................................................................64
4.5. Ações do Tutor...................................................................................................66
4.6. Gestão de Problemas.........................................................................................67
4.7. Atribuição de Alunos a Turma............................................................................68
4.8. Análise da Solução do Aluno..............................................................................69
4.9. Ações do Aluno ..................................................................................................70
4.10. Interface do Aluno ............................................................................................71
4.11. Componente no AVEP .....................................................................................72
4.12. Seqüência da Aprendizagem ...........................................................................73
4.13. Avaliação dos Problemas.................................................................................75
4.14. Etapa 1 da Fase 1 – Lista de Problemas..........................................................76
4.15. Etapa 2 da Fase 1 – Jogos...............................................................................77
4.16. Etapa 1 da Fase 2 - Fórum...............................................................................78
4.17. Etapa 2 da Fase 2 - Formalização ...................................................................79
4.18. Desenvolvimento de Programas (Fase 3)........................................................80
4.19. AVEP Fórum ....................................................................................................81
4.20. AVEP E-mail.....................................................................................................82
4.21. AVEP Recado ..................................................................................................82
4.22. AVEP Armazenamento.....................................................................................83
4.23. Gráfico da Freqüência do AVEP ......................................................................85
4.24. AVEP: Exemplo de Jogo – Limpadores de Vidro.............................................86
A.1: O cronograma da disciplina .............................................................................107
xii
LISTA DE TABELAS
3.1: Estrutura da metodologia. ..................................................................................40
4.1. Resultado da oficina...........................................................................................87
5.1. Contribuições do AVEP......................................................................................91
xiii
LISTA DE TERMOS
A4 – Ambiente de Aprendizagem Adaptado para Algoritmos
ACM – Associação para Maquinaria da Computação
AmCorA – Ambiente Cooperativo de Aprendizagem
ASA – Animação e Simulação de Algoritmos
ATMUF – Aplicação para Teste de Mesa Utilizando Fluxograma
AVEP – Ambiente Virtual para Ensino de Programação
AWTM – Aplicação Web para realizar Teste de Mesa em algoritmos
BACCII++ - Ben A. Calloni Coding Iconic Interface
CECIERJ/CEDERJ - Fundação Centro de Ciências e Educação Superior a Distância
do Estado do Rio de Janeiro
CISUC – Centro de Informática e Sistemas da Universidade de Coimbra
GT3 – Grupo de Trabalho de Licenciatura em Computação
HabiPro – Habits of Programming
HTML – HyperText Markup Language
IEEE – Instituto de Engenharia Elétrica e Eletrônica
ILA – Interpretador de Linguagem Algorítmica
PROINFO – Programa Nacional de Informática Educativa
SBC – Sociedade Brasileira de Computação
SBIE – Simpósio Brasileiro de Informática na Educação
TIC – Tecnologia da Informação e Comunicação
UAL – Unesa Algorithmic Language
WEI – Workshop de Educação em Computação
Capítulo 1 – Introdução
1.1 Contexto
Durante os três últimos séculos deslumbraram-se diferentes eras nas quais
se constava o domínio de alguma tecnologia. O desenvolvimento tecnológico
durante este período inicia-se com os grandes sistemas mecânicos até atingir as
atuais tecnologias da informação e comunicação (TICs) na chamada era da
informação.
A era atual estabelece uma nova sociedade, referida por Castells (1999)
como Sociedade Informacional, produzindo um grande impacto econômico-social ao
excitar a competitividade nos negócios e empreendimentos e promover a integração
social tornando as pessoas mais próximas em grandes distâncias e elevando o
nível de informação. A conseqüência deste impacto nas organizações é a rápida e
contínua necessidade de modernização da produção e comercialização de bens e
serviços. Isto faz com que as tecnologias da informação desempenhem um papel
pró-ativo na estratégia das organizações.
Para Castells (1999), a era da informação se caracteriza não pela
centralidade de conhecimento e informação, mas pela aplicação destes
conhecimentos e informações na geração de novos conhecimentos e de dispositivos
de processamento/comunicação da informação, em um ciclo de realimentação
cumulativo entre inovação e seu uso.
É evidente a necessidade de um modelo de adaptação para alavancar o
desenvolvimento e manter uma competição econômica. O caso brasileiro considera
a geração de novas oportunidades de trabalho promovendo a qualificação
profissional nacional. Segundo Takahashi (2000), a mão-de-obra qualificada
assegura ganhos de produtividade e melhora a competitividade ampliando a oferta
de empregos.
Para demarcar a proposta deste modelo pode-se levar em consideração o
que ocorreu com o sistema produtivo de bens e serviços. O paradigma da produção
2
em massa na qual grande parte dos trabalhadores era instruído a se comportar
como uma máquina, exercendo somente aquilo que era “programado” para fazer,
evoluiu para a produção enxuta na qual os trabalhadores possuem um papel mais
participativo e importante, pois passam a ter maiores responsabilidades como tomar
decisões, buscar resolver problemas e desenvolver tarefas que otimizem os
processos da produção previamente não planejadas.
Portanto, é considerável uma infra-estrutura moderna, mas também é
importante a capacitação profissional de modo a transformar a informação em
conhecimento, um fator essencial em todas as etapas do processo produtivo.
Somente ter informação não implica em ter conhecimento. O conhecimento
deverá ser fruto do processamento dessa informação, aplicação dessa informação
processada na resolução de problemas significativos e reflexão sobre os resultados
obtidos (Valente, 1999 p. 30).
Neste caso, a educação é um elemento fundamental, pois visa não somente
capacitar o indivíduo a trabalhar com alguma das Tecnologias de Informação e
Comunicação (TICs), mas investir na criação de competências para sua atuação
efetiva no mercado de trabalho, na sua formação como auto-aprendiz de modo a
adaptar-se a rápida mudança tecnológica e para aproveitar o conhecimento
adquirido no complexo processo de tomada de decisão.
Nesta realidade, a escola necessita agir de forma diferente estando atenta
às mudanças tecnológicas de forma a ser menos impactada por estas. No contexto
deste ambiente escolar, os professores passam a repensar o processo de ensino e
aprendizagem construindo novas formas de ação utilizando a informática como um
novo instrumento de aprendizagem.
A informática deve habilitar e dar oportunidade ao aluno de adquirir novos
conhecimentos, facilitar o processo ensino/aprendizagem, enfim ser um
complemento de conteúdos curriculares visando o desenvolvimento integral do
indivíduo (Flores, 2002 apud Lopes, 2004).
Indo mais além, a informática representa um componente suscetível que
influi a formação do indivíduo. Assim, tem-se um novo ambiente de aprendizagem
3
que dinamiza o processo educacional permitindo o aprendiz conhecer seu potencial
cognitivo para resolver problemas, tomar decisões e, sobretudo, inovar.
Resolver problemas é uma necessidade intrínseca na vida cotidiana das
pessoas, desde problemas simples, como conferir o troco numa compra pequena,
até situações mais complexas, como escolher o melhor caminho para ir de um ponto
a outro ou a melhor distribuição dos recursos financeiros de uma família face ao
aumento crescente das despesas. De uma forma ou de outra, pela necessidade de
resolver estes e outros problemas, algum tipo de solução acaba sendo encontrada.
E, com o passar do tempo, caso a mesma situação se apresente para a pessoa
inúmeras vezes, a tendência é que seja buscada uma melhor solução do que a
anterior seja por mudança radical ou por melhoria incremental de solução já
conhecida. Além disso, a solução adotada por uma pessoa pode ser passada para
outra pessoa em situação semelhante, com as devidas adaptações feitas por esta
segunda, adequando a circunstância particular.
Para cada solução adotada, as partes envolvidas de alguma forma
conseguem justificar, seja para si próprias ou para outrem, a escolha feita. Há,
portanto, algum tipo de lógica subjacente às soluções dadas.
A questão, porém, é que na maioria das vezes estas soluções não são
estruturadas. As partes envolvidas não necessariamente conseguem materializar
alguma forma de explicação clara de qual foi a solução dada e, menos ainda, quais
foram as razões para ser aquela solução e não outra qualquer.
Na verdade, esse é um problema comum: como formalizar o conhecimento
tácito. Isso nos casos em que tal conhecimento já esteja presente. E quando ele não
está? De que forma pode ser desenvolvido?
Em cursos de engenharia e computação uma das metas está definida em
torno da capacidade do aluno apresentar soluções para diversas classes de
problemas encontradas no cotidiano das pessoas, das organizações e de diversos
outros elementos.
Através de um programa busca-se um mecanismo de obtenção de soluções
para um conjunto de problemas e o processo, ou seja, as várias instruções
4
estruturadas logicamente que o computador executa para chegar a tais soluções são
definidas por meio de uma linguagem de programação.
O desenvolvimento de programas não se limita apenas a resolução de
problemas, mas contribui com a geração de negócios inovadores que impactam
positivamente os segmentos da economia tornando-se foco para política de
promoção nacional.
1.2 Definição do Problema e Motivação do Trabalho
O ensino de algoritmos e programação busca, principalmente, fornecer as
bases necessárias para o desenvolvimento da lógica de programação e, em seu
estudo, representar o raciocínio envolvido através de algoritmos nexos e corretos,
desenvolvendo competências e habilidades para construir soluções estruturadas
para problemas e a posterior transformação desses em programas.
Neste processo, a busca pela formalização ou expressão estruturada de
situações e procedimentos cria diversas dificuldades (Delgado et al, 2004):
Manipulação e interpretação de uma nova representação semiótica;
Identificação de elementos e de suas inter-relações, de uma situação
problema;
Adaptação ao pensamento algorítmico.
Destaca-se em vários trabalhos e relatos de professores e alunos que o
processo de ensino e aprendizagem de algoritmos e programação apresenta muitas
outras dificuldades que têm origem em diversas vertentes e razões. Estes problemas
são difíceis de serem tratados, de forma que não se pode afirmar a existência de
uma solução que o resolva em sua totalidade.
Não é novidade que disciplinas desta área apresentam altos índices de
reprovação, o que pode ser sintoma de limitadas pesquisas relacionadas (Kaasbøll,
1998) de modo a questionar o aprendizado, buscando entender as dificuldades e
propor alternativas que agreguem valor a este, facilitando-o. Para as pessoas que
5
não fazem este questionamento resta a simples visão de que infelizmente
“programação não é para todos” (Rocha, 1995).
Entretanto, como será demonstrado no Capítulo 2, o processo de ensino e
aprendizagem em algoritmos e programação é um tema levado em consideração por
diversos pesquisadores nacionais e de outros países comprovado pela quantidade
de referências relativas ao assunto. Porém, existe muito trabalho a ser feito para
alcançar uma solução que amenize consideravelmente os problemas associados ao
processo.
1.3 Objetivos
O presente trabalho propõe um Ambiente Virtual para Ensino de Algoritmos
e Programação (AVEP) que reflete uma metodologia que busca a construção do
conhecimento através da resolução de problemas.
Para concretizar esta proposta foi necessário cumprir os seguintes objetivos
específicos:
Identificar os problemas do processo e propostas para amenizá-los;
Desenvolver uma metodologia baseada numa estratégia de ensino que
valorize aspectos construtivistas;
Validar a metodologia preconizando as características de um ambiente
virtual Web;
Implementar e validar o ambiente proposto.
1.4 Justificativa
A presente dissertação deriva do resultado de uma análise sobre as
propostas de vários pesquisadores para amenizar os problemas do processo de
ensino e aprendizagem de programação. Tal resultado indica que adotar uma
metodologia combinada com o uso de recursos computacionais que promovam a
comunicação, interação, colaboração e construção do conhecimento produzem
6
melhores resultados no aprendizado do conteúdo e conseqüente redução da evasão
e repetência.
Assim, foi proposto o Ambiente Virtual para Ensino de Programação
(AVEP) que se fundamenta e guia uma metodologia, o que representa seu
diferencial em relação a muitas outras ferramentas não apoiadas ou integradas com
estratégias pedagógicas.
O ambiente foi desenvolvido para ser utilizado na Web. Assim, estará
sempre disponível em qualquer lugar onde haja possibilidade de acesso a Internet,
além de considerar um custo mínimo de hardware e software para os padrões
atuais.
1.5 Estrutura da Dissertação
Esta dissertação está estruturada em quatro capítulos além da presente
introdução.
No Capítulo 2 é realizada uma análise crítica da literatura sobre o processo
de ensino e aprendizagem de algoritmos e programação, a partir de uma síntese de
problemas e de propostas de pesquisadores para amenizá-los.
No Capítulo 3 é apresentada uma metodologia construtivista e um conjunto
de ferramentas computacionais que arquitetam o pressuposto ambiente validadas a
partir de uma Oficina de Lógica de Programação aplicada à alunos do Ensino Médio.
No Capítulo 4 é descrito a arquitetura do ambiente de aprendizagem
proposto e discutido os resultados de uma validação à distância com alunos do
Ensino Superior.
No Capítulo 5 serão feitas algumas considerações finais em torno dos
objetivos definidos nesta dissertação e de propostas para trabalhos futuros.
Capítulo 2 – Análise Crítica da Literatura
Obter o grau de conhecimento necessário em programação é considerado
por muitos alunos um obstáculo muito difícil de ser superado ou até mesmo
impossível. Este pensamento é fruto de vários fatores que os alunos enfrentaram ou
que ainda enfrentam dentro de um ambiente de aprendizagem.
Em muitos casos, o professor não consegue contornar este pensamento em
grande parte destes alunos criando a necessidade de mudar a forma de trabalho.
Esta mudança representa a geração de outros problemas num ciclo intermitente, ou
seja, uma nova proposta didática que pretende minimizar a problemática do ensino
de programação acaba criando novas dificuldades, o que é comum neste caso.
Assim, não é um caso isolado o professor não conseguir auxiliar os alunos a
adquirirem o conhecimento necessário para desenvolver programas. Na verdade, o
processo pode ser bem mais complexo do que uma mudança de visão do aluno.
Pode-se levantar uma série de questionamentos a respeito desta temática,
como:
Que dificuldades os alunos possuem para aprender a programar?
Em que ponto do processo estas dificuldades começam a aparecer?
De onde provêem estas dificuldades?
Do próprio aluno que já traz dificuldades de aprendizagem oriundas de
outros níveis educacionais?
De uma metodologia que não desperta a curiosidade ou a vontade de
aprender?
Do professor que não consegue se relacionar com os alunos ou aplicar
uma metodologia para motivá-los?
Estas e muitas outras questões devem ser consideradas como tema de
trabalhos de pesquisa de forma a melhorar os resultados deste processo em nível
8
de aprendizado uma vez que programar computadores é uma atividade importante
para profissionais de computação e engenharia.
De forma a analisar o que tem sido pesquisado sobre o processo de ensino
e aprendizagem de algoritmo e programação, um amplo levantamento bibliográfico
foi realizado tendo como principais fontes de consulta anais dos eventos
patrocinados pela Sociedade Brasileira de Computação (SBC), em âmbito nacional,
e, no internacional, a Scientific Literature Digital Library (CiteSeer.IST), Association
for Computing Machinery (ACM), IEEE Computer Society e Artificial Intelligence
Group (CISUC). É interessante notar que a maioria destas fontes são área da
computação, o que não é difícil para se justificar pois é exatamente nesta área que
mais se afloram os problemas do processo e, neste caso, inferir propostas para
amenizá-los é de extrema importância como foi dito anteriormente.
Figura 2.1: Levantamento da literatura nacional e internacional (105 artigos)
Neste levantamento bibliográfico foram identificados 105 artigos nos quais é
possível identificar os potenciais problemas inerentes ao processo, verificar a
existência de propostas que busquem minimizar tais problemas e analisar o foco
destas propostas com o objetivo de indicar, de modo geral, o que promove melhores
resultados.
A Figura 2.1 mostra que existe boa quantidade de trabalhos nacionais
disponíveis quando comparado com a literatura internacional, para a qual os autores
que contribuem provêm de vários países e diferentes línguas. Ressalta-se, no
40
65
Nacionais
Internacionais
9
entanto, a necessidade de ampliar estudos sobre a educação na computação,
particularmente no que diz respeito ao processo de ensino e aprendizagem de
algoritmos e programação considerando-se o nível de dificuldade que este tema
suscita.
2.1 Alguns Desafios Relativos ao Processo de Ensino e Aprendizagem de
Algoritmos e Programação
De que forma instruir o computador para realizar uma determinada tarefa?
Um algoritmo é como um guia que descreve como chegar a solução de um
determinado problema e que pode ser descrito sem o uso de algum formalismo
desde que seja compreendido pelo maior número possível de pessoas. Isto já não
ocorre com a linguagem de programação de computadores, a qual se utiliza de um
formalismo rígido para expressar as instruções que um computador deve executar
para solucionar um problema.
Pelo menos no Brasil é comum professores de algoritmo e programação
adotarem o algoritmo com estrutura de linguagem de programação. O que se busca
é a descrição dos passos a serem executados pelo computador na língua nativa,
pois as linguagens de programação geralmente são em inglês. Isto acarreta num
aprendizado com foco na linguagem e com menor atenção à descrição de como
resolver um problema. Segundo Pane, Ratanamahatana e Myers (2001), a
programação pode ser mais difícil que necessário porque requer que soluções sejam
expressas de forma não familiar ou natural pelos iniciantes. O aluno pode não
compreender como transpor seu raciocínio numa descrição formal rígida e a falta
desta competência pode ser a principal razão pelo alto índice de reprovação nas
disciplinas com este tema e, em alguns casos, pela desistência de um curso.
Em parte isto decorre da dificuldade encontrada pelos professores para
acompanharem efetivamente as atividades laboratoriais de programação, dado o
grande número de estudantes geralmente sob sua supervisão (Tobar et al, 2001).
Além disso, alguns alunos podem apresentar elevado grau de timidez para
esclarecer alguma dúvida perante a turma e outros se dispersam com facilidade, não
10
prestando atenção à explicação fornecida pelo professor, o que dificulta ainda mais
a orientação do aprendizado.
Também se pode considerar nesta questão a forma como os alunos
estudam para a disciplina, geralmente memorizando, e a falta de pré-requisitos em
conteúdos relacionados. A título de exemplo, alguns autores preconizam a
necessidade de domínio de habilidades matemáticas prévias ou ao menos
integradas (Henderson, 1987) ou pelo menos desejável (Koliver, Dorneles e Casa,
2004) sendo considerado até um bom indicador de sucesso para o processo
(Winslow, 1996) por auxiliar na interpretação e resolução de problemas. Já para
outros (Baeza-Yates, 1995) o próprio nível de conhecimento prévio de lógica
matemática é discutido.
De acordo com Kozak e Eberspächer (2000), estudantes de ciência da
computação e engenharia da computação geralmente possuem um perfil distinto das
outras engenharias. Segundo estes autores, uma parte significativa destes
estudantes ingressa na universidade com melhor preparação sobre a utilização de
computadores do que os outros. Neste ponto considera-se também uma
diferenciação do conteúdo abordado na disciplina para cursos com enfoques
diferentes.
Entretanto, o professor de outra engenharia pode ser também da área de
computação e não fazer diferenciação de conteúdo e metodologia adotada, mesmo
tendo o conteúdo programático a ser cumprido definido pela instituição de ensino.
Até mesmo na computação alguns professores extrapolam o conteúdo considerado
básico para o aprendizado de programação priorizando fornecer uma visão geral ao
invés de uma base de conhecimento sólida.
Como conseqüência deste fato, o aluno passa para a próxima etapa do
curso com deficiência de aprendizagem e provavelmente se formará sem nenhuma
oportunidade ou desejo de recuperação, pois o professor desta etapa já o considera
com competência para assimilar um conteúdo mais avançado e não haveria tempo
para uma recuperação eficiente.
O aluno se sentirá fragilizado para aprender tal conteúdo, o que favorece o
aumento do grau de dificuldade desenvolvendo até mesmo um sentimento de pavor
11
em relação à disciplina (Rodrigues, 2002; Schultz, 2003; Chaves de Castro et al,
2003; Delgado et al, 2004). Desta forma, os alunos passam a comentar as suas
dificuldades de aprendizagem de programação influenciando negativamente os
novos alunos, gerando desânimo com a crença de que a disciplina é um obstáculo
extremamente difícil de ser superado (Rodrigues, 2002).
Além da falta de motivação criada pelo despreparo e pelo desânimo,
Rodrigues (2002) relata outros problemas associados a este processo:
O processo tradicional de avaliação pode prejudicar o aprendizado, pois
geralmente os alunos procuram estudar na véspera da prova.
O relacionamento entre professor e aluno pode ser um problema quando o
primeiro preocupa-se em mostrar o que sabe, desconsiderando um ambiente
de aprendizagem descontraído e colaborativo. Muitos professores foram
alunos com facilidade de aprender tal conteúdo e atualmente são
profissionais que atuaram por alguns anos na área e, portanto, possuem uma
visão bastante técnica com pouca estrutura educacional.
A didática inadequada ou falta de metodologia de ensino dificulta o
aprendizado dos novos e diversos conceitos. Inclui-se aqui a grave falta de
comunicação entre os professores das várias disciplinas que permitiria
identificar conteúdos afins ou superposição de tópicos tornando o trabalho
realizado mais integrado auxiliando o processo de ensino e aprendizagem
(Giraffa, Marckak e Almeida, 2003; Pimentel, França e Omar, 2003).
Segundo Menezes e Nobre (2002 apud Schultz 2003), algumas das
dificuldades vivenciadas pelo professor no processo envolvem: reconhecer as
habilidades inatas de seus alunos; apresentar técnicas para soluções de problemas;
trabalhar a capacidade de abstração do aluno, tanto na busca das possíveis
soluções como na escolha da estrutura de dados a ser utilizada; promover a
cooperação e colaboração entre os alunos.
O professor pode não conseguir aplicar uma determinada metodologia de
ensino, principalmente quando não possui alguma estrutura educacional ou
desempenha uma atividade que difere de sua vocação. Neste casos, o
12
descontentamento dos alunos é extremamente elevado, excitando problemas como
os já apresentados. Assim como os alunos, o professor também deve atender à
certos pré-requisitos para que possa propor soluções que contornem os diversos
desafios do ensino de programação.
Pode-se questionar que este problema ocorre em qualquer disciplina, que
este é um problema intrínseco ao ambiente educacional. Entretanto, no ensino de
algoritmos e programação o desafio é muito maior, pois como já foi citado, o aluno
deve ser estimulado a desenvolver sua capacidade de resolver as mais diversas
classes de problemas e de representar sua proposta de solução numa descrição
não-natural, atividade que não ocorre com tanta intensidade previamente ao estudo
de programação e que geralmente é realizada num período de no máximo dois
semestres.
Como exemplo, é possível citar o estudo da matemática que é aplicado ao
aluno deste a infância e mesmo que ele esteja na graduação é possível que tenha
elevado índice de dificuldade nesta disciplina. Como citado, a matemática pode até
ser considerada um pré-requisito para o estudo de programação. Portanto, este
estudo necessita de um espaço de conhecimento muito maior, o que indutivamente
dispõe de maiores dificuldades no processo de ensino e aprendizagem a serem
questionadas pelo professor.
O processo de ensino e aprendizagem de programação apresenta diversos
outros problemas além dos supracitados que fazem parte de um ciclo intermitente
entre professor, aluno e a metodologia aplicada.
2.2 Propostas na Literatura para Minimização dos Problemas
A partir de tais problemas associados ao processo de ensino e
aprendizagem de programação, uma boa parcela da comunidade científica passou a
se preocupar com a questão produzindo projetos de pesquisa que visam à melhoria
deste processo uma vez que esta área é em muitos casos base para o
desenvolvimento profissional do aluno.
13
Como é possível perceber, os questionamentos em relação a estes
problemas parecem não ter fim. Não se pode garantir alguma solução, mas
consegue-se um conjunto de boas propostas que produzam resultados razoáveis em
determinadas circunstâncias.
A análise da bibliografia encontrada, independente de ser nacional ou
internacional, mostrou que há três vertentes na busca de soluções para os
problemas apontados na seção anterior:
Ferramentas – inclui trabalhos que apresentam ferramentas ou
ambientes computacionais visando facilitar o processo de ensino e
aprendizagem.
Estratégias – inclui trabalhos que discutem estratégias de ensino e/ou
de avaliação de competências.
Ferramentas e Estratégias – são os trabalhos que discutem alguma
estratégia suportada por ferramentas computacionais ou integradas com
as mesmas.
Na subseção a seguir é apresentada uma breve síntese das ferramentas
computacionais identificadas na literatura. Na subseção 2.2.2 é apresentada uma
breve síntese de estratégias pedagógicas propostas (sejam elas associadas ou não
as ferramentas computacionais). Finalmente, na seção 2.3 uma breve análise crítica
da literatura é apresentada.
2.2.1. Ferramentas
“A programação é caracterizada por ser mais prática do que teórica. É um
tópico que deve ser aprendido mais 'por fazer' do que por memorização” (Vizcaíno et
al, 2000).
A partir deste comentário, considera-se que a ferramenta básica para a
prática de desenvolver algoritmos é a resolução de uma lista de exercícios e
projetos, cujas soluções são dispostas em papel formalmente descritas segundo as
orientações do professor.
14
Na verdade, a composição de passos que forma um algoritmo não requer
necessariamente alguma formalidade. Entretanto, é comum atribuir à descrição
algorítmica um conjunto de regras e palavras chaves de modo a fornecer um
aspecto formal característico de linguagens e, assim, promover a compreensão dos
usuários que de certa forma entendem tal descrição.
Com isto, o ensino do raciocínio algorítmico, que será a base do
desenvolvimento de programas a posteriori, é uma tarefa árdua principalmente
porque o aluno não consegue enxergar no algoritmo o funcionamento da lógica que
ele tenha desenvolvido (Pinheiro, 2003). Neste caso é importante demonstrar, ou
verificar, que o algoritmo, ou programa, realmente resolve o problema proposto
(Schultz, 2003).
A utilização de uma ferramenta computacional para a prática da
programação, ao invés do desenvolvimento de algoritmo no papel, torna-se um
referencial importante para o processo de ensino e aprendizagem (Menezes e
Nobre, 2002 apud Schultz, 2003).
Segundo Pollard e Forbes (2003), o recurso da visualização permite a
disposição de problemas mais complexos, atuando fortemente sobre a motivação
dos alunos. Problemas triviais são interessantes no início, mas depois tendem a
entediar os alunos, sobre tudo os possuem maior facilidade de aprender tal
conteúdo.
A visão destes diferentes autores confirma o auxílio que as ferramentas
computacionais de desenvolvimento podem promover, no sentido de fornecer ao
aluno a possibilidade de executar uma atividade prática contínua em busca de
assimilar a lógica de programação, principalmente quando se está considerando um
leigo ou iniciante. Além disso, é notável o interesse que os alunos possuem em
visualizar a execução de seu código na máquina, ou seja, uma ferramenta de
desenvolvimento torna-se um instrumento motivador do estudo de programação.
Espera-se que os alunos desenvolvam um conjunto de habilidades
cognitivas para que possam efetivamente aprender a resolver problemas utilizando o
computador como ferramenta. A escolha da ferramenta influencia diretamente a
15
forma de elaborar e estruturar a solução de um problema (Giraffa, Marczak e
Almeida, 2003 p.1).
Conforme dito anteriormente, a descrição algorítmica para representar o
raciocínio envolvido na solução de um problema geralmente utiliza uma estrutura de
linguagem, uma pseudo-linguagem.
Algoritmo Epositivo;
Var A: numérica;
Início
Leia(A);
Se A>0 então
Escreva(“É positivo”)
Senão
Escreva(“É negativo ou nulo”);
Fim Se;
Fim.
(A) PSEUDO-CÓDIGO (B) FLUXOGRAMA
(C) DIAGRAMA DE CHAPIN
Figura 2.2: Formas mais utilizadas de representação algorítmica.
Segundo Cares e Dazzi (2002), a pseudo-linguagem mais utilizada no caso
brasileiro é o Portugol, ou português estruturado, que utiliza uma descrição em
língua portuguesa, chamada pseudo-código (Figura 2.2a), com estrutura sintática
semelhante a da linguagem de programação Pascal que, por sua vez, é uma das
mais utilizadas para o estudo de programação. É interessante observar que a
utilização da língua nativa para descrição do código favorece o aprendizado. Os
autores também comentam que outra forma bastante utilizada para descrever
16
algoritmos é através de fluxogramas (Figura 2.2b), os quais fazem uso de símbolos,
como figuras geométricas, para representar as diferentes estruturas da descrição.
Existe também o diagrama de Chapin criado por Ned Chapin a partir de trabalhos de
Nassi & Shneiderman (Figura 2.2c).
A principal justificativa para se utilizar o pseudo-código é que o mesmo se
assemelha bastante com a forma como os programas são escritos. Já no caso do
fluxograma, alguns autores defendem ser a forma de representação mais eficaz por
trabalhar habilidades espaciais (Werth et al, 1985; Cares e Dazzi, 2002).
Segundo relato de Dave Scalan (Werth et al, 1985), pesquisas mostram que
bons programadores possuem habilidades processadas pelo hemisfério direito do
cérebro bem desenvolvidas, como as habilidades espaciais. Como o fluxograma
apresenta a informação ao cérebro em uma forma altamente espacial, pode-se
chegar a conclusão de que trabalhar com ele irá facilitar o aprendizado.
Porém, Pane e Myers (1996) advertem que o trabalho com fluxogramas
requer esforço de rearranjar o layout quando há necessidade de mudanças e faz uso
ineficiente de espaço da tela.
Além disso, induz a programação não-estruturada e o procedimento de
tradução do fluxograma para o código-fonte de um programa pode ser bastante
problemático, pois a linguagem de programação requer uma descrição formal rígida
que o fluxograma não possui. Por exemplo, ao definir uma estrutura de seleção
entre dois casos possíveis, o fluxograma utiliza uma simples representação
geométrica enquanto a linguagem de programação necessita de certos requisitos
sintáticos mais elaborados para que esta estrutura seja reconhecida. Logo, a falta de
adaptação com uma formalização rígida poderá dificultar o desenvolvimento de
programas.
Pode-se questionar a razão pela qual ainda pode ser utilizada a descrição
algorítmica em linguagem natural ao invés da pseudo-linguagem ou de uma
linguagem de programação mais didática como Pascal, proposta apoiada por Gries
(1974). Como resposta, Winslow (1996) presume que o algoritmo permite concentrar
características importantes da solução e ignorar detalhes que podem ser tratados
posteriormente. Neste contexto, pode-se citar o grande número de detalhes
17
sintático-semânticos que nem sempre permitem a abstração de aspectos da
máquina quando da codificação da solução.
Uma alternativa nesse sentido é citada por Warren (2004) ao propor o uso
de linguagens script como JavaScript considerando-as poderosas para ensinar a
base de programação sem a necessidade de complicação. Entretanto, a
programação através de scripts visa o controle de alguma aplicação na qual o
usuário deve ter algum domínio de seus componentes. Esta observação parece
desfavorecer tal aprendizado, mas na verdade em determinados casos poderá
ocorrer certa contribuição.
O estudo de HTML (HyperText Markup Language), linguagem de marcação
utilizada para construção de páginas para Internet, é uma atividade
reconhecidamente motivadora e de fácil aprendizado, principalmente pela
possibilidade do aluno dispor seu trabalho para várias outras pessoas. A linguagem
JavaScript pode complementar tal estudo de forma a controlar os componentes da
página e, deste modo, estará contribuindo para o aprendizado de programação. Um
modelo semelhante a este é utilizado no curso de tecnologia em sistemas de
computação da Fundação CECIERJ/Consórcio CEDERJ, no qual os alunos
possuem uma disciplina de projeto e desenvolvimento de algoritmos (Cruz e
Knopman, 2005) em paralelo com a disciplina de construção de páginas web (Assis
e Conci, 2005) a qual inclui em seu conteúdo programático a linguagem JavaScript.
No questionamento do uso de linguagens pode-se também discutir o
paradigma associado à esta. O relatório da força tarefa da IEEE e ACM (2001)
afirma que o estudo de algoritmos deve fornecer o discernimento da natureza
intrínseca do problema e técnicas de solução independentes de qualquer paradigma,
linguagem de programação ou hardware. Segundo a força tarefa, deve-se portanto,
tratar o problema independente da forma de sua implementação. Esta visão é
corroborada por autores como Henderson (1986) e Koliver, Dorneles e Casa (2004).
Alguns autores vão mais longe ao afirmar que a introdução de paradigmas como
orientação a objetos nos cursos iniciais sobre algoritmos não fornece evidências
significativas de facilitar o aprendizado (Marion, 1999; Perego, Lisboa e Bertagnolli,
2002; Burton e Bruhn, 2003). Já outros autores preconizam que certos paradigmas,
como o funcional, podem facilitar o processo (Chaves de Castro et al, 2003). Outros
18
defendem o próprio paradigma imperativo, preferencialmente orientado a objeto
(Baeza-Yates, 1995) ou o estruturado clássico (Delgado et al, 2004).
De qualquer modo é válido e importante reconsiderar a necessidade de
visualização dos resultados da execução do algoritmo. Tal operação através de
linguagem natural é muito difícil de ser processada pela máquina, pois cada aluno
irá propor uma variação muito grande de soluções em diferentes formatos. Fazer
uso da inteligência artificial nas propostas dos alunos em linguagem natural para
identificar padrões encontrados em soluções corretas é uma sugestão interessante,
porém muito complexa para implementação e com nível de asserção muito variante.
A gama de ferramentas computacionais propostas para apoio ao processo
de ensino e aprendizagem de algoritmos e programação decorre de diferentes áreas
da própria computação, seja a inteligência artificial na proposição de tutores
inteligentes, seja na computação gráfica para animação do acompanhamento de
estruturas e execução dos algoritmos, seja na própria construção de ferramentas de
apoio as fases de elaboração de algoritmos como o teste de mesa.
A seguir são apresentadas algumas das ferramentas mencionadas na
literatura relacionadas a este escopo:
Animação e Simulação de Algoritmos (ASA) é uma ferramenta composta
por um tutorial sobre lógica de programação e um módulo de construção
do algoritmo, denominado “Constructor”, que agrupa o Pseudocódigo
(Portugol) com fluxogramas (Santiago e Dazzi, 2003; Schultz, 2003) .
Figura 2.3: Constructor
19
Aplicação Web para realizar Teste de Mesa em Algoritmos (AWTM)
trata-se de um conjunto de ferramentas que trabalham integradas,
permitindo desenvolver algoritmos em português estruturado, executá-
los, disponibilizando informações sobre análise de algoritmos e
realizando teste de mesa (Medeiros e Dazzi, 2002; Santiago e Dazzi,
2003).
Figura 2.4: Aplicação Web para realizar Teste de Mesa em Algoritmos (Medeiros e
Dazzi, 2002)
Ambiente para Teste de Mesa Utilizando Fluxograma (ATMUF) é uma
ferramenta para o usuário montar a lógica utilizando símbolos da
estrutura de Fluxogramas, propiciando sua execução e visualização do
passo-a-passo, bem como dos resultados (Cares e Dazzi, 2002;
Santiago e Dazzi, 2003).
20
Figura 2.5: Ambiente para Teste de Mesa Utilizando Fluxograma (Cares e Dazzi,
2002)
Portugol/Plus é uma ferramenta de apoio ao ensino da lógica de
programação baseado no Portugol, sem reduzir o estudo teórico, que
estimula os alunos a praticar e exercitar o desenvolvimento de
algoritmos (Esmin, 1998).
Figura 2.6: Portugol/Plus (Esmin, 1998)
21
HabiPro (Habits of Programming) é um software pedagógico e
colaborativo projetado para desenvolver em estudantes novatos bons
hábitos de programação tais como eficiência, estruturação, economia de
recursos, inserção de comentários, entre outras. Considera-se aspectos
pedagógicos como habilidades, preferências e dificuldades de um grupo;
bem como aspectos sociais incluindo motivação e colaboração (Vizcaíno
et al, 2000).
Figura 2.7: HabiPro (Vizcaíno et al, 2000)
ToonTalk é um sistema genérico de programação concorrente no qual o
código-fonte é animado e o ambiente de programação é um jogo de
vídeo. Todos os pormenores da computação abstrata foram
concretizados em metáforas específicas. A animação adequa-se muito
melhor à dinâmica dos programas de computador do que diagramas ou
ícones estáticos (Kahn, 1995).
22
UAL (Unesa Algorithmic Language) é um interpretador animado com
base no Portugol na qual o aluno, utilizando recursos gráficos
(animações), pode compreender de forma rápida e dinâmica como as
estruturas envolvidas se comportam (Ual, 2004).
ILA não é propriamente um ambiente de desenvolvimento, mas sim um
interpretador que trabalha com algoritmos definidos em português
estruturado, permitindo que sejam testados e executados (Ila, 2004).
Figura 2.8: ILA
BACCII++ é uma ferramenta na qual toda a construção do programa é
baseada em ícones. O estudante poderá gerar um código sintaticamente
correto do programa para uma das várias linguagens baseada em texto
permitindo sua execução e teste. Segundo Ziegler e Crews (1999) os
alunos que utilizam esta ferramenta executam melhor a tarefa de
programação (Baccii++, 2004).
23
Figura 2.9: BACCII++ (Baccii++, 2004)
FLINT é um ambiente de desenvolvimento, teste e depuração de
algoritmos através de fluxogramas (Ziegler e Crews, 1999).
Figura 2.10: FLINT (Ziegler e Crews, 1999)
24
FADIX visa desenvolver algoritmos representados em pseudocódigo
sem decorar as estruturas intrínsecas, bastando indicar as ações lógicas
e a ordem que devem tomar. Após tais ações serem definidas, cabe a
ferramenta representá-la textualmente (Pseudocódigo) ou graficamente
(Fadix, 2004).
Pascal-Logo é uma adaptação feita ao ambiente Logo através da
inclusão de um compilador Pascal permitindo que o aluno passe de um
estágio de “acumular comandos” para a programação efetiva. O Logo é
um ambiente de aprendizado que consiste em um robô-tartaruga que
funciona com um instrumento de desenho. A abordagem de associar o
apelo visual do Logo a uma linguagem de programação como o Pascal
foi proposta inicialmente por Harvey (1997 apud Pinheiro, 2003).
Figura 2.11: Pascal-Logo (Guimarães, 2002)
RoboProf é um sistema de ensino baseado em Web que apresenta um
conjunto de tópicos fechados e exercícios buscando ensinar uma
linguagem, bem como a elaboração do projeto de um programa. Busca
incrementar a motivação por se assemelhar a um jogo eletrônico (Daly,
1999).
25
AnimPascal é um ambiente educacional de programação baseado em
animação que permite editar e compilar programas baseados em
Pascal, armazenando o caminho para a solução do problema feita pelo
aluno, ajudando-o a entender todas as fases da construção do algoritmo
e ao professor detectar os erros de seus alunos (Satratzemi, Dagdilelis e
Evagelidis, 2001).
É importante notar que as ferramentas computacionais não se limitam as de
desenvolvimento, mas consideram-se também os ambientes virtuais de
aprendizagem que são utilizados no ensino de programação. Neste cenário nem
sempre há um ambiente que ensine tal conteúdo, mas este é utilizado para apoiar o
processo de aprendizagem através de recursos como quadro de avisos, bate-papo
(chat), fórum de discussões e correio eletrônico que permitem maior interatividade e
colaboração principalmente no que se refere a resolução de exercícios e
esclarecimento de dúvidas entre os próprios alunos. Exemplos de tais ambientes:
TelEduc (http://hera.nied.unicamp.br/teleduc/); Moodle (http://www.moodlebrasil.net);
AulaNet (http://www.eduweb.com.br/portugues/aulanet_o_aulanet.html).
Nota-se a necessidade de uma metodologia para guiar todo o processo de
aprendizagem e, assim, a ferramenta deixa de ser o foco para ser um complemento
à metodologia.
Pode-se citar como exemplo de ambiente com foco na ensino de
programação o Ambiente de Aprendizagem Adaptado para Algoritmos (A4) proposto
por Falkembach et al (2003). O objetivo deste é auxiliar o aprendizado de
desenvolvimento de algoritmos e programas em Pascal utilizando uma estratégia
ascendente de resolução de problemas. Sua utilização requer uma participação
muito ativa do professor, principalmente pela melhor condução do processo de
aprendizagem. É interessante destacar que o ambiente se adapta as necessidades
do aluno e que faz uso de animações para ampliar a interação com o mesmo e,
assim, facilitar o aprendizado.
26
Figura 2.12: Ambiente de Aprendizagem Adaptado para Algoritmos (A4)
Um outro exemplo é o ambiente SAmbA - Suporte à Cooperação em um
Ambiente de Aprendizagem para Programação (Menezes e Nobre, 2002) que
constitui uma facilidade ao Ambiente Cooperativo de Aprendizagem (AmCorA). Tem
na sua concepção fornecer suporte inteligente na solução de problemas,
reforçando a colaboração e cooperação. Apesar deste ambiente também não guiar
a aprendizagem fornece bons recursos que promovem a cooperação quanto ao
desenvolvimento de soluções.
27
Figura 2.13: Ambiente Cooperativo de Aprendizagem
Pode-se, ainda, citar muitos outros ambientes como o Eureka referenciado
em (Kozak e Eberspächer, 2000) e PROOGRAMA de (Giraffa, Marczak e Almeida,
2003).
A variedade de ferramentas demonstra a tentativa dos pesquisadores em
melhorar ou amenizar os problemas associados ao ensino de programação a partir
do uso destas. Porém, a restrição a fazer é que muitas delas foram desenvolvidas
sem base pedagógica intrínseca. É o que ocorre, por exemplo, com as ferramentas
que visam apenas o desenvolvimento.
2.2.2. Estratégias
A principal dificuldade que os programadores novatos têm quando
programam computadores é o gap entre as representações que o cérebro usa
quando pensa sobre um problema e a representação que um computador aceitará
(Baldwin e Kuljis, 2001).
O aprendiz tem mais dificuldade de colocar as partes de um programa juntas
do que aprender os conceitos de uma linguagem de programação (Spohrer e
28
Soloway, 1986 apud Kaasbøll. 1998), ou seja, conhecer onde e como combinar
instruções que gerem o resultado desejado (Winslow, 1996).
Expressar a solução de um problema via algoritmo requer que o aluno saiba
analisar o problema, o que muitas vezes exige conhecimento de domínio específico,
e abstraí-lo num contexto mais amplo. Para isto, o aluno deve ser capaz de
perceber os componentes do problema, conhecer a solução esperada de forma bem
definida, identificar os dados a serem computados e, finalmente, desenvolver uma
estratégia de solução.
Rodrigues (2002) afirma que o professor deve ser capaz de fazer o aluno
compreender a abstração envolvida com toda simbologia utilizada. E que para isto
deve utilizar sua criatividade e tentar resolver cada problema baseando-se em
situações do cotidiano e, assim, o aluno começa a ter raciocínio lógico e ordem de
pensamento.
Para a atividade de desenvolvimento, o aluno deverá ler atentamente o
enunciado buscando entender bem o problema, decompor o problema em partes,
combinar soluções das partes num todo, instanciar o algoritmo para um programa,
testar e reexaminar o resultado do programa (Woodson, 1998; Schultz, 2003;
Maccracken et al, 2001; Irons, 1982).
No ensino de programação, e por conseqüência no ensino de Algoritmos,
deve-se buscar condições para que o aluno intencionalmente conheça o seu estilo
de raciocinar e solucionar problemas. O desafio do professor é auxiliá-lo a
sistematizar e organizar a estratégia de solução para os problemas na forma de um
algoritmo (Giraffa, Marczak e Almeida, 2003). Para isto, a organização das aulas
pelo professor deve ser apoiada por metodologias e estratégias de ensino que
promovam tal condição.
Identificar o nível de maturidade do aluno é importante neste ponto para que
o professor possa adequar o processo pedagógico no sentido de acompanhar o
amadurecimento do aluno e permitindo aplicar técnicas de ensino e aprendizagem.
Os métodos atuais de ensino de programação incluem sessões com e sem
laboratório nas quais os estudantes reforçam o que eles aprenderam na teoria por
desenvolver pequenos programas.
29
Nas aulas fora do laboratório os alunos podem utilizar um material escrito
fornecido previamente pelo professor através da internet, se for possível. Deste
modo evita-se o consumo de tempo do processo "copiar e colar" de todo o conteúdo
do quadro negro para o caderno (Kozak e Eberspächer, 2000). É possível que
ocorra até o pré-preparo do aluno para a aula, o que vai depender da motivação do
mesmo para antecipar o trabalho com os conteúdos. Além disso, o aluno poderá
rever o conteúdo quando achar necessário e a redução do consumo de tempo
favorece o desenvolvimento da mais atividades práticas em laboratório.
Estas aulas podem se basear em explanações seguidas por atividades
práticas através de uma lista de exercícios em ordem crescente de complexidade
que também poderão ser disponibilizados previamente.
Com o objetivo de motivar os alunos poderá ser criada uma dinâmica em
sala de aula quanto à resolução dos exercícios. Para isto o professor deve evitar sua
participação na resolução e designar alunos para apresentarem suas contribuições,
mesmo que estas não estejam corretas, visando criar um ambiente colaborativo
através de discussões com seus colegas sobre possíveis correções e
melhoramentos. Segundo Baldwin e Kuljis (2001), a aprendizagem efetiva ocorre no
lugar onde o aprendiz tem oportunidade de interagir e cooperar.
Cada indivíduo é um ser único que possui origem, experiências e
habilidades distintas o que justifica a apresentação de resultados diferentes pela
maioria dos alunos. Assim, as soluções apresentadas podem ser disponibilizadas na
Internet de modo a fazer com que os alunos percebam que para um mesmo
problema é possível haver diferentes modelos de solução e instigar a construção de
outros modelos.
É importante destacar o papel do professor que, neste caso, deixa de ser o
transmissor de informações, o guia de soluções passo-a-passo, para apresentar um
papel de mediador, ou facilitador, permitindo que o aluno tenha a oportunidade de
construir seu conhecimento. Portanto, o professor é o agente que organiza a
informação para que o aluno a transforme em conhecimento (Ausubel,1980 apud
Giraffa, Marczak e Almeida, 2003).
30
Em aulas fora do laboratório, Delgado et al (2004) incluem uma fase inicial
do processo denominada “Iniciação Lúdica” que trata de resolução de problemas de
diversos domínios como jogos, charadas, quebra-cabeças lógicos e simbólicos, com
o objetivo de desenvolver a autonomia na busca de soluções próprias para os
problemas apresentados.
As aulas práticas, desempenhadas em laboratórios, propiciam tempo para o
aluno explorar, consolidar e aprimorar o conhecimento adquirido durante a fase
teórica. Segundo Woodson (1988), os estudantes necessitam a todo tempo ter
tarefas que podem ser desempenhadas e que contribuam para a aprendizagem. É
pertinente que tópicos principais do conteúdo já apresentado sejam reforçados para
melhor aproveitamento do aprendizado durante a prática em laboratório.
As atividades neste ponto podem ser realizadas individualmente ou em
grupo. Este último pretende promover a motivação dos alunos, principalmente
aqueles mais dispersos. Considera-se a possibilidade de fazer todos entenderem
que o comprometimento com as atividades é refletido em suas avaliações buscando
mantê-los o mais próximo possível do ritmo médio da turma.
Para os alunos com maior facilidade de aprendizagem ou que já trazem
alguma experiência anterior com o conteúdo poderão ser disponibilizados tarefas
mais complexas e desafiadoras. Estes alunos podem desempenhar o papel de
monitores, função que visa esclarecer dúvidas aos colegas menos experientes ou
com dificuldades de compreensão, auxiliando muito o processo. Em muitas
situações os monitores conseguem promover a mediação melhor que o professor.
Estes alunos monitores podem ser identificados pela avaliação do estado mental do
aprendiz proposta em Pimentel, França e Omar (2003). Em todo este contexto o
papel do professor continua a ser de facilitador, auxiliando quando necessário.
No estágio final de todo este processo de ensino busca-se avaliar se
realmente o aluno adquiriu o conhecimento necessário. Pimentel, França e Omar
(2003) descrevem um modelo de acompanhamento da aprendizagem que permite o
professor recuperar alunos com deficiência. Mccracken et al (2001) apresentam uma
metodologia de avaliação de aprendizagem a partir de uma estrutura de
expectativas.
31
2.3. Uma Análise Crítica da Literatura
Conforme já citado, a abordagem para o ensino de programação e
algoritmos na literatura aponta para três vertentes: i) proposição de ferramentas
computacionais de apoio, de ii) estratégias pedagógicas para o desenvolvimento de
competências ou iii) na combinação de ambas. A partir desta classificação obtêm-se
dados estatísticos (Figura 2.14) sobre a importância que se tem dado a cada uma
destas vertentes.
54
31
20
Ferramentas
Estratégias
Ferramentas e Estratégias
Figura 2.14: Vertentes das soluções para o problema do ensino de algoritmos e programação
(105 artigos)
Nota-se que a preocupação maior está em desenvolver ferramentas
computacionais do que agregá-las a estratégias(s) que forneça(m) apoio
pedagógico. Pode-se considerar natural, em certa medida, a existência de uma
maior preocupação para desenvolver ferramentas. Isto se deve, entre outros fatores,
provavelmente ao fato de que muitos professores inclusos neste processo não
possuem preparação pedagógica, preocupando-se em exaltar o lado técnico que já
possui sua prática.
Para representar o quadro brasileiro, foram levantados os anais de 1999 a
2003 de dois dos maiores eventos nacionais que envolvem Educação e Informática,
32
o Workshop de Educação em Computação (WEI) e o Simpósio Brasileiro de
Informática na Educação (SBIE).
O Workshop de Educação em Computação (WEI) tem por objetivo
debater os diferentes temas relacionados com o ensino de computação e
informática. Dessa forma,o WEI tem se tornado um importante fórum de debate para
professores, alunos, coordenadores de cursos e demais interessados no
aprimoramento do ensino das diversas áreas da computação e informática.
O Simpósio Brasileiro de Informática na Educação (SBIE) tem como
objetivo divulgar a produção científica nacional nesta área e proporcionar um
ambiente para a troca de experiências e idéias entre profissionais, estudantes e
pesquisadores nacionais e estrangeiros.
Considerar na avaliação os trabalhos do SBIE parte da hipótese de que os
pesquisadores têm se preocupado com soluções computacionais para o processo
em diversas áreas de domínio muitas vezes negligenciando a própria área de
Computação e Informática.
Tanto o WEI quanto o SBIE fazem parte do conjunto de eventos anuais
promovidos pela Sociedade Brasileira de Computação (SBC), uma instituição que
fomenta e desenvolve pesquisa científica na área da Computação. A SBC promove
mais de 30 eventos anuais de cunho tecnológico em computação.
A partir dos dados apresentados na Figura 2.15 é possível constatar que
pelo menos um artigo por ano sobre o ensino de programação é publicado em um
dos eventos. Como era de se esperar, o WEI é o evento que apresenta o maior
índice de publicações e este valor gira em torno de duas por ano, em média. Apesar
do SBIE não ter foco específico para tratar de temas da educação em computação e
informática é perceptível que há alguma penetração dessa temática no evento, o
que poderia ser ampliado, reforçando o caráter interdisciplinar de propor soluções da
computação e informática para o processo de ensino e aprendizagem da própria
área.
33
Figura 2.15: Publicações sobre o Ensino de Fundamentos de Programação no WEI e SBIE –
1999 a 2003
Com base nestes resultados quantitativos observa-se que a preocupação
com o ensino de programação tem se demonstrado crescente para o WEI e estável
para o SBIE. Assim, comprova-se que a comunidade de computação brasileira se
mostra ciente e busca soluções referentes aos problemas do ensino-aprendizagem
de programação.
De forma a assinalar qual é o foco de interesse das pesquisas a partir da
classificação apresentada anteriormente, considera-se os anais dos três últimos
anos do período selecionado (1999 a 2003). Nota-se também que o resultado não
difere muito do quadro geral, ou seja, a preocupação maior está em desenvolver
ferramentas computacionais isoladamente (Figura 2.16).
2
0
111
0
2
1
5
3
0
1
2
3
4
5
6
1999 2000 2001 2002 2003
Ano
Quantidade de Artigos
SBIE
WEI
34
Figura 2.16: Foco das publicações dos eventos em 2001 e 2003.
Valente (1999) e Almeida (2001) têm mostrado a pertinência de uso de
recursos computacionais no processo de ensino e aprendizagem, sobretudo quando
associados a estratégias pedagógicas adequadas. Assim, sugerir estratégias
apoiadas por um ambiente virtual que proporcione a colaboração e ferramenta de
desenvolvimento que permita a execução e visualização de resultados parece ser
uma proposta a ser analisada com atenção.
Porém, de uma forma geral, o que se observa é uma preocupação em tratar
as estratégias e ferramentas computacionais separadamente. Tais recursos
proporcionam alguns resultados positivos (por exemplo, a redução da evasão e a
melhoria das notas), mas a união entre eles poderia produzir resultados melhores.
5
4
3
Ferramentas
Estratégias
Estratégias e Ferramentas
Capítulo 3 – Uma Metodologia para Ensinar Programação
Um ambiente de aprendizagem é um lugar onde ocorre a aprendizagem
através do desenvolvimento de atividades e das interações dos alunos entre si e
com o ambiente. Portanto, este ambiente deve proporcionar, além de uma
comunicação eficaz, o compartilhamento e a troca de experiências entre o grupo de
alunos, ou seja, promover a construção do conhecimento através da colaboração.
A interação e a colaboração parecem ser atividades que sutilmente estão
associadas à aprendizagem de programação. Viscaíno et al (2000) destacam que
durante o estudo de programação, além dos livros, muitos alunos buscam cursos e,
quando possuem acesso a Internet, ingressam em listas e grupos de discussão para
questionar outros estudantes e programadores.
É possível perceber, portanto, que de algum modo os alunos de
programação estão buscando um contato para discutir os problemas e soluções,
para adquirir novas e motivadoras experiências e obter certa vivência que são
elementos pertinentes aos ambientes de aprendizagem colaborativos conforme a
perspectiva construtivista.
Segundo Goulart (1998, p.14 apud Martins, 2002), “o construtivismo explica
os processos de desenvolvimento e aprendizagem como resultado da atividade do
homem na interação com o ambiente. Piaget explica essa interação valendo-se dos
conceitos de assimilação, acomodação e adaptação”.
Logo, pensar no princípio construtivista de que o indivíduo é o responsável
pela construção de seu próprio conhecimento a partir de experiências e vivências,
sugere a construção de ambientes colaborativos de ensino.
Cunningham et al (1993 apud Struchiner et al, 1998) mencionam que, do
ponto de vista pedagógico, os ambientes construtivistas de aprendizagem possuem
características de:
36
Possibilitar que o aluno experimente o processo, assumindo a
responsabilidade de decisão sobre tópicos e subtópicos do domínio a serem
cobertos;
Possibilitar que os alunos avaliem soluções alternativas e testem suas
decisões já que no mundo real dificilmente existe uma única solução correta
para um problema;
Envolver a aprendizagem em contextos realistas e relevantes;
Encorajar a “apropriação” do processo de aprendizagem tornando o professor
um consultor que os orienta ao invés de conduzi-los;
Envolver a aprendizagem em experiências sociais;
Encorajar o uso de múltiplas formas de representação;
Encorajar ações reflexivas, ou seja, fornecer condições com que o aluno
compreendendo certo conteúdo seja capaz de explicar porque e como um
determinado problema foi resolvido.
Conforme comentado no capítulo anterior, o ensino de programação
representa um grande desafio para os professores devido aos vários fatores que
dificultam a assimilação do conteúdo. A partir desta constatação, torna-se
imprescindível considerar que a metodologia a ser aplicada neste processo de
ensino e aprendizagem deve buscar meios para estimular o desenvolvimento
cognitivo e a compreensão de conceitos, o que submete a criação de um ambiente
de aprendizagem colaborativo segundo as características apresentadas.
Designa-se neste contexto, portanto, a abordagem da Aprendizagem
Baseada em Problemas (ABP) pelo fato de que a atividade de resolver problemas,
que envolve habilidades operacionais formais, tais como o raciocínio e o
pensamento lógico-dedutivo, remete diretamente a proposta da própria
programação. Esta idéia é corroborada por Falkembach et al (2003) quando a cita a
diferença entre um exercício e um problema, onde o primeiro exige uma mera
aplicação de alguma habilidade e/ou conhecimento matemático previamente
37
assimilado; já o segundo é uma situação nova que necessariamente envolve a
criação de algum procedimento para chegar à solução.
Delgado et al (2004) propuseram uma metodologia baseada na resolução de
problemas na qual é possível identificar características construtivistas que
conduzem, segundo os autores, à atitude de motivar, estimular e orientar o aluno a
conquistar o seu próprio conhecimento, desenvolver as suas próprias técnicas e
estratégias e obter soluções de sua autoria, em lugar de tentar absorver aquelas
organizadas e apresentadas pelo professor como acontece tradicionalmente.
Para tanto, considera-se a atuação do professor como facilitador, o papel
pró-ativo do aluno e o uso de recursos didáticos voltados para o desenvolvimento da
capacidade de abstração, do raciocínio lógico, da solução de problemas e da
autonomia cognitiva.
A análise da literatura apresentada no capítulo anterior orienta que para o
ensino de algoritmos e programação é necessário associar estratégia e ferramentas
computacionais de modo a obter melhores resultados em termos de motivação do
aluno e conseqüente redução do índice de repetência e evasão. Como a
metodologia de Delgado et al (2004) apresenta as características almejadas
segundo a pesquisa relacionada a esta tese, a estratégia incorporada a esta
metodologia foi utilizada como referência para a concepção de uma nova proposta
que agrega o suporte de diferentes ferramentas computacionais em sua aplicação,
descrita na próxima seção.
De modo a realizar uma atividade prática para averiguar os resultados da
aprendizagem com esta nova perspectiva da metodologia, optou-se por desenvolver
uma oficina de programação com alunos do ensino médio, adotando uma proposta
do Grupo de Trabalho de Licenciatura em Computação (GT3) da SBC. Esta
validação apresentou resultados positivos e incentivou o desenvolvimento de um
ambiente virtual baseado na web que é apresentado no próximo capítulo.
38
3.1. A Metodologia
A metodologia descrita por Delgado et al (2004) é constituída de três fases.
Cada uma representa uma evolução no processo cognitivo sobre programação e
possui atrelado um conjunto de competências que devem ser alcançadas ao
transpor da fase. A definição destas competências tem base no trabalho de Delgado
et al (2005).
A primeira fase trabalha a resolução de problemas com o objetivo de
desenvolver a autonomia na busca de soluções próprias. Estes problemas são de
diversos domínios do conhecimento e incluem quebra-cabeças lógicos, jogos,
problemas simples de aritmética e geometria. O professor age como facilitador das
atividades, sugerindo exercícios para explicitar questões despercebidas e indicando
formas alternativas de interpretar o problema e encaminhar as tentativas de solução.
Sugere também material suplementar para consulta e propõe formação de pequenos
grupos para discussão de temas com entendimento ainda superficial.
Na segunda fase, o professor conduz o aluno pela experiência da
formalização, valorizando a concisão e a precisão da linguagem utilizada. Para
tanto, esta fase é dividida em duas etapas.
A primeira tem por objetivo a formalização em linguagem natural. Nesta
etapa, o aluno expõe verbalmente sua solução a um grupo de colegas que são
estimulados pelo professor a questioná-la e validá-la. Esta discussão em grupo é um
instrumento de percepção de fragilidades da linguagem natural.
Na segunda etapa é feita a transcrição da solução que o aluno ou grupo
julga estar formalizada para o quadro negro. A partir disto, surge um debate com
correções e outras propostas do que foi transcrito. Ao identificar uma proposta
consistente, o professor finaliza a discussão e transcreve a respectiva solução.
A terceira fase visa a construção de algoritmos. Gradativamente o aluno irá
focar o processo de solução, construindo procedimentos sistemáticos que possam
ser seguidos por outra pessoa. O professor neste processo induz a adoção de
estruturas próximas daquelas utilizadas nas linguagens de programação.
39
A primeira versão desta metodologia foi adotada a partir do segundo
semestre de 2003 e desde então tem demonstrado bons resultados como a redução
quase total da evasão e o aumento do nível de motivação. Entretanto, conforme
informam Deltado et al (2004), o nível de reprovação foi mantido.
Como é possível perceber, não há menção em relação ao uso de
ferramentas computacionais durante as fases, o que segundo a análise da literatura
proporcionaria uma melhor aprendizagem, e a aplicação desta metodologia culmina
no desenvolvimento de algoritmos que não fornecem recursos para visualização dos
resultados.
Devido a estes fatores, foi proposta uma metodologia com base na
estratégia de ensino de Delgado et al (2004) de modo a vislumbrar o uso de
ferramentas computacionais durante as fases e tendo como meta o desenvolvimento
de programas.
Esta metodologia continua sendo constituída por três fases: a primeira fase
visa desenvolver o raciocínio lógico e a criatividade dos alunos a partir da resolução
de problemas; a segunda busca a formalização gradual de soluções até o
desenvolvimento de algoritmos e, por fim, estes algoritmos serão traduzidos para
uma linguagem de programação.
Como descrito, o conteúdo que vislumbra a construção de algoritmos
correspondente a última fase da metodologia apresentada por Delgado et al (2004)
foi agregado à segunda fase nesta nova concepção de modo a incluir a tradução
destes algoritmos numa linguagem de programação como terceira fase.
Cada fase desenvolve atividades que contemplam uma ferramenta
computacional e promovem o desenvolvimento de competências almejadas para
programar, conforme apresentado na Tabela 3.1. Uma descrição detalha das fases
da metodologia e dos recursos computacionais utilizados são apresentadas nas
próximas subseções.
A partir do trabalho de Kozak e Eberspächer (2000) foi comentado no
capítulo anterior que se deve levar em consideração uma diferenciação do conteúdo
abordado em disciplinas introdutórias de programação para cursos com enfoques
diferentes. Por este motivo, o conteúdo programático atribuído a metodologia é
40
considerado básico para o tema em questão permitindo ser aplicado
independentemente se o aluno está cursando engenharia ou computação.
Fase Atividade Ferramenta Competências
I – Iniciação
Lúdica
Resolver
Problemas
Jogos Computacionais Interpretar problemas, elaborar e
analisar soluções
II – Falando
Sério
Formalizar
Soluções
Fórum Virtual Compreender e propor
descrições formais segundo
modelo computacional
III – E agora? Desenvolver
Programas
Ferramenta de
Desenvolvimento Pascal
Transcrever as descrições
formais numa linguagem de
programação
Tabela 3.1: Estrutura da Metodologia.
A disposição de conceitos está organizada de modo a favorecer a evolução
cognitiva, amenizando os impactos do aprendizado de programação, como o uso de
uma linguagem formal rígida. Para tanto, tem-se a seguinte prescrição:
Primeira Fase – Iniciação Lúdica – Resolução de Problemas
Resolução de problemas de diversos domínios
Segunda Fase – Falando Sério – Formalização
Representação de soluções em linguagem natural
Formalização de soluções (Construção de Algoritmos)
o Divisão em casos (estrutura de seleção – “Se”)
Terceira Fase – E agora? – Construção de Programas
Tradução dos Algoritmos para uma Linguagem de Programação (Pascal)
Estruturas de Repetição
41
Os problemas a serem aplicados aos alunos em cada fase devem ser
disponibilizados pelo professor de modo que o aprendiz possa trabalhar a
capacidade de abstração e utilize o conhecimento adquirido em uma fase na outra.
Para estimular a abstração e a construção do conhecimento é interessante
se basear em contextos do cotidiano dos alunos tentando fazê-los utilizarem do
conhecimento prévio para chegar à solução de um problema, o que influencia
positivamente na aprendizagem como indicam Moreira e Masini (2001 apud
Pimentel, França e Omar, 2003), além de ser característico de ambientes
construtivistas.
É importante fazer com que os alunos entendam todo o processo de
aprendizagem a ser vivenciado para não gerar um descontentamento durante o seu
desenvolvimento, pois a ânsia inicial se deve ao desejo da programação
propriamente dita cuja atividade só será realizada na última etapa do processo.
Deve-se tentar aproveitar este momento de ansiedade que o aluno se
encontra para aumentar o seu interesse pelo resultado final desejado. A motivação é
um elemento chave que precisa ser visado durante todo o processo. Para tanto,
relembrar ao aluno a diferença e dependência intrínseca entre hardware e software,
descrever o papel do software dentro de várias atividades profissionais e referenciar
o diferencial do profissional que detêm o conhecimento de programação podem
produzir a motivação primária proposta.
3.1.1. As Fases
3.1.1.1. Primeira Fase – Iniciação Lúdica – Resolução de Problemas
Num primeiro momento desta fase os alunos resolvem problemas,
disponibilizados em uma lista de questões, que envolvem situações do cotidiano e
que não demandam grande conhecimento prévio de algum conceito ou propriedade
matemática. Por exemplo:
42
“Exemplo1) Um aluno tirou notas 4.0 na primeira prova e 5.2 na segunda.
Levando em conta o critério para cálculo de média do local onde você estuda,
quanto ele deve tirar na prova final para que não seja reprovado?”
“Exemplo2) Sobre um dia escolar do Simão, os seus irmãos disseram o
seguinte:
Irmão 1:
o Foi à aula de Matemática.
o Não foi à aula de História.
o Não foi à aula de Biologia.
Irmão 2:
o Foi à aula de História.
o Foi à aula de Inglês.
o Não foi à aula de Matemática.
Irmão 3:
o Foi à aula de Matemática.
o Foi à aula de História.
o Não foi à aula de Inglês.
Assumindo que cada criança mentiu exatamente uma vez, quais são as
aulas que Simão assistiu?
Os problemas são propostos de modo que possam ser reutilizados nas fases
seguintes para aprender conceitos pertinentes ou reforçar o aprendizado.
No caso do Exemplo1 (cálculo da média), este poderá ser utilizado na Fase
2 (formalização) para ensinar conceitos de dados de entrada e saída ao questionar
quais dados serão necessários para se calcular a média, por exemplo. Também se
pode estudar a aplicabilidade da estrutura de seleção “Se” através da avaliação da
condição de aprovação, ou seja, se a média necessária for alcançada então o aluno
43
estaria aprovado, senão o aluno faria a prova final e seria calculada a nota
necessária para aprovação. Nota-se que a partir da nota final tem-se a possibilidade
de trabalhar a estrutura de seleção novamente, de forma aninhada, para decidir se o
aluno foi ou não aprovado. Finalmente, este problema poderá ser utilizado na Fase 3
(programação) para aprender a utilizar estruturas de repetição quando for
necessário calcular a média de vários alunos de uma turma.
No caso do Exemplo2 (aulas do Simão), como este necessita da construção
de uma tabela verdade para se chegar à solução, poderá ser utilizado para entender
a lógica matemática utilizada nas condições das estruturas de seleção e repetição.
Como é possível perceber, estas atividades proporcionam ao aluno
desenvolver novos esquemas mentais de forma gradual que o capacita a chegar à
solução de outros problemas a partir de situações análogas. Durante todo o
processo de aprendizagem, o professor atua como facilitador auxiliando em pontos
que ficaram despercebidos e sugerindo formas alternativas de propor soluções.
Estimula-se a busca de soluções em grupo. No entanto, nada impede que
um problema seja solucionado individualmente e discutido com os colegas. Neste
momento é interessante disponibilizar a internet para que os alunos pesquisem.
Caso os alunos recorram ao professor, este deve tentar se assegurar que foi
investido certo grau de esforço quanto à busca de soluções.
Após a resolução dos problemas, os alunos expõem oralmente para a turma
as propostas de solução criando um ambiente de debate quanto à validação da
solução e a melhor proposta. Neste momento inicial ocorre certa timidez em alguns
alunos, porém, com a interação com os outros se busca aumentar o contato com a
turma deixando-os livres para expressar suas idéias, ou seja, os alunos percebem
que uma solução errônea agrega valor para encontrar a melhor solução e que esta
não é encarada como um fator que exprime suas capacidades intelectuais. O erro,
no caso, não é necessariamente visto como um problema, mas como uma etapa
para construção da solução.
Concluída a resolução da lista de questões, como um segundo momento
desta fase, os alunos passam para a busca de soluções de diversos problemas
através de jogos lógicos de computador. Assim, os alunos se sentem mais
44
motivados no desenvolvimento das tarefas e, conseqüentemente, desenvolvem o
raciocínio, pois estes jogos agregam um conjunto de elementos multimídia que
prendem mais a atenção do que questões em papel.
Figura 3.1: Jogo “Histórias das 1001 Noites”
Um exemplo é o jogo “Histórias das 1001 Noites” (Figura 3.1) que conta a
história de um Xeique que oferece a mão de sua filha para quem consiga 8 litros de
vinho em duas porções de 4 litros considerando que há somente três vasos: um com
capacidade para oito litros, outro para cinco litros e, o último, para três litros.
Neste jogo há um contador de tempo e da quantidade de transvasos de
modo a motivar o aluno a encontrar diferentes soluções para o mesmo e a
compartilhar resultados com os colegas, como: “Quem conseguiu o menor número
de transvasos?”, “Quem resolveu em menor tempo?”, etc.
A partir deste jogo pode ser explicado, na fase seguinte, o conceito de
atribuição quando se considerar, por exemplo, que cada vaso corresponde a uma
variável (v8, v5, v3) e ao realizar o transvaso do todo o vinho em v3, que está cheio
(três litros), para o v8, que já está com 2 litros, se está atribuindo a v8 cinco litros de
vinho conforme resultado da operação v8 v8 + v3.
45
Na fase três, este conceito de atribuição a partir dos vasos com vinho pode
ser utilizado durante o aprendizado de estruturas de repetição para explicar como é
realizado um somatório.
Durante o uso dos jogos, o professor deve solicitar a descrição do caminho
feito pelos alunos na busca da solução. Eles com certeza irão procurar uma maneira
de representar o raciocínio envolvido, seja através de um texto do tipo dissertativo
ou utilizando uma simbologia. Este resultado poderá ser utilizado na Fase 2 para
demonstrar a importância e a necessidade da formalização. É um momento de
transição para o aprendizado inserido nesta próxima fase da metodologia.
3.1.1.2. Segunda Fase – Falando Sério – Formalização
Antes de programar um computador é necessário conhecer como
desenvolver uma especificação formal que nada mais é do que um conjunto de
instruções a serem seguidas, as quais possam indicar alguma solução de um
problema. Neste caso, trata-se de utilizar uma linguagem que seja bem interpretada,
sem ambigüidades, ou seja, uma linguagem formal.
Devido à formalização representar uma dificuldade do aluno, esta fase
concentra-se neste processo de forma gradual. Ou seja, inicialmente os alunos
devem propor soluções utilizando sintaxe proposta por eles próprios, a partir de
simplificação da linguagem natural. A cada momento o aluno melhora sua
especificação até conseguir descrever um algoritmo independente de seu estilo
cognitivo e independente das regras do português estruturado. Esse nível somente
será desenvolvido um pouco mais adiante.
Um instrumento utilizado para propor soluções é fórum de discussão na
Internet (Figura 3.2). É uma oportunidade para conhecer uma determinada
tecnologia disseminada, além de criar um ambiente colaborativo para o
desenvolvimento de bons procedimentos. Além disso, o fórum deixa registrado o
histórico das contribuições, permitindo ao próprio aluno avaliar seu processo de
crescimento.
46
Figura 3.2: Fórum na Internet
A idéia é trabalhar com os alunos divididos em grupos para validar,
questionar, comentar e propor descrições dos procedimentos para encontrar
soluções de determinados problemas num clico interativo e motivador. O professor
induz estas ações a serem aplicadas em todos os grupos até chegar a um consenso
quanto à formalização. O que se propõe é diminuir a competição e aumentar a
colaboração visando à percepção gradativa do processo de formalização.
A proposta intrínseca dos problemas da Fase 1 podem ser retomadas de
modo que os alunos façam uso do conhecimento prévio adquirido na etapa anterior.
Por exemplo, o raciocínio envolvido na resolução do problema supracitado do
cálculo da nota final para aprovação (Exemplo1) poderá ser reaproveitado para
solucionar o seguinte problema:
Dadas as notas do primeiro e segundo bimestre de um aluno, descreva o
procedimento que um funcionário da secretaria deve seguir para calcular a média
deste aluno, e dizer se ele já foi aprovado.
47
Como já comentado, este problema poderá ser utilizado para aprender
diversos conceitos em programação, bem como, a partir das soluções propostas
pelos alunos, identificar a necessidade da formalização. Neste sentido, também
poderá ser aproveitada a solução de um aluno para um determinado jogo como uma
questão a ser discutida:
Um aluno propôs a seguinte solução para o jogo dos Vasos de Vinho :
Primeiramente tirei 5L do vaso de 8L e passei para o vaso de 5L, depois retirei 3L do vaso de
5L e passei para o vaso de 3L, depois passei 3L do vaso de 3L para o vaso de 8L, onde o mesmo ficou
agora com 6L, depois passei os 2L que estavam no vaso de 5L para o vaso de 3L que passou a ficar
com 2L, depois passei 5L do vaso de 8L para o vaso de 5L que passou a ficar cheio, depois passei 1L
do vaso de 5L para o vaso de 3L que ficou cheio, logo o vaso de 5L ficou com 4L, por último passei os
3L que estavam no vaso de 3L para o vaso de 8L que estava apenas com 1L e agora passa a ter 4L,
ficando assim os vasos de 8L e 5L cada um com 4L e o vaso de 3L vazio’.
A solução apresentada está correta? Devido ao fato de expressar a
quantidade em litros que será transferida de um vaso para outro, a solução proposta
pode gerar confusão. Você concorda? Proponha alguma representação que deixe
mais sucinto o caminho para se chegar à solução”.
Se houver grande dificuldade, o professor poderá apresentar um exemplo de
como seria um procedimento formal em linguagem natural para que os alunos não
julguem erroneamente a melhor proposta. Estes geralmente tendem a se basear em
exemplos de outros colegas ou do professor no desenvolvimento inicial. Assim, o
exemplo dado definiria pontos estratégicos não percebidos pelos alunos quanto a
definição de um bom procedimento.
Após a interação no fórum e com a convicção de é preciso formalizar, a
aprendizagem segue no sentido de tornar as especificações mais rígidas
formalmente e mais adequadas para a meta final: programar o computador. Este
processo é gradual e extremamente lento.
Busca-se utilizar um exemplo simples do cotidiano, como o cálculo da média
aritmética das notas dos alunos, para descrever um procedimento no qual será
aplicada esta formalização gradativa. A estratégia neste ponto implica em estimar
que materiais ou elementos se fazem necessários para a realização do
48
procedimento; em identificar tais materiais com um nome subjacente (nota1, nota2,
média); em classificar os dados dentro de um procedimento (dados de entrada,
dados calculados e dados de saída) e, finalmente, em utilizar uma linguagem precisa
para representar tal procedimento conforme adota uma linguagem de programação.
É interessante notar que este passo referencia a definição futura das variáveis de
um programa. Estabelecem-se aqui também alguns tópicos para a organização de
um procedimento ou especificação. Exemplo:
material
nota1 (nota do primeiro bimestre) – dado de entrada
nota2 (nota do segundo bimestre) – dado de entrada
média (média bimestral do aluno) – dado calculado
início
pergunte ao usuário as notas do primeiro e segundo bimestre do aluno,
nota1 e nota2.
média = ( nota1 + nota2 ) / 2.
Informe ao usuário o valor da média.
fim
É importante notar que cada etapa desta estratégia é acompanhada de
diversas atividades. Assim, por exemplo, antes de utilizar a linguagem precisa são
propostos diversos problemas para identificar os “materiais” e os tipos de dados.
Seguindo o processo, a próxima etapa será definir tempo de elaboração e
tempo de execução e discutir a divisão de casos formalizando a estrutura de seleção
“Se”. O conhecimento dos conectivos lógicos e a definição de condições lógicas são
de extrema importância para a avaliação dentro da estrutura de seleção “Se”. A
formalização desta estrutura não deverá ser uma atividade de alto grau de
dificuldade, pois os alunos provavelmente devem possuir certo conhecimento da
estrutura em linguagem natural no início desta fase. Com isto teríamos:
49
Calcula Média Final
Material
nota1, nota2, média: números
início
pergunte ao usuário as notas do primeiro e segundo bimestre do aluno
média = (nota1 + nota2)/2
Se média >= 7
então
O aluno está aprovado
senão
O aluno ficou em prova final
fim”.
Ao final desta fase os alunos já devem ser capazes de desenvolver
algoritmos com certo grau de formalização que não representam procedimentos
difíceis de serem traduzidos para uma linguagem de programação procedural. Isso é
realizado na fase a seguir.
3.1.1.3. Terceira Fase – E agora? – Construção de Programas
O objetivo principal desta fase é justamente permitir que os alunos vejam o
resultado do trabalho desenvolvido. Neste momento, pode-se questionar a
existência de ferramentas que apresentam tal resultado utilizando algoritmos, porém
uma linguagem de programação propriamente dita irá representar a realidade de
como é realizado o desenvolvimento profissional de programas de computador e
permite aumentar a proficiência dos alunos. No caso, optou-se em utilizar a
linguagem Pascal por ser bastante comum para esta aprendizagem em cursos de
graduação e pela facilidade da tradução dos algoritmos propostos.
50
Figura 3.3: Ferramenta ‘Turbo Pascal’
No momento inicial o professor poderá solicitar aos alunos a descrição
formal de um procedimento simples como o de calcular a média aritmética das
notas, apresentado nas fases anteriores. O exemplo permitirá comparar algoritmo e
programa, além de introduzir a tradução para a linguagem de programação. Então,
uma pequena descrição de como trabalhar com o compilador é feita e também uma
apresentação da estrutura básica de um programa em Pascal definindo alguns tipos
de variáveis e alguns comandos ou instruções simples como as de leitura e escrita
de dados. A formalização utilizada na linguagem de programação trará certas
dificuldades para os alunos por ser bem mais rigorosa, mas num breve tempo estas
serão superadas.
Neste momento é importante utilizar o algoritmo e realizar a tradução para
deter o uso das instruções da respectiva linguagem. Após certo período utilizando-se
de traduções prossegue-se para o desenvolvimento utilizando a linguagem somente.
O número de instruções a serem aprendidas e a forma de apresentação destas varia
com a necessidade e disponibilidade do professor. No caso desta tese, sugere-se
51
finalizar o estudo com o aprendizado das estruturas de repetição, pois é conteúdo
inerente dos cursos de computação e engenharia. Portanto, é desejável ao final
desta fase que os alunos detenham pelo menos a capacidade de desenvolver
programas que envolvam comandos de entrada e saída de dados, estruturas de
seleção e de repetição, ou seja, as primitivas básicas de qualquer programa.
3.2. A Proposta do Grupo de Trabalho sobre Licenciatura em Computação
Conforme já citado, estamos vivendo numa sociedade informacional
caracterizada pela constante necessidade de transformação da informação em
conhecimento. Nesta vivência, onde informação, conhecimento e inovação são
fundamentais, a educação é elemento chave e a computação e informática tem sido
um recurso elementar do processo educacional.
É importante preocupar-se com o crescimento do número de profissionais
desta área e consequentemente com a formação destes. Com esta visão, os Grupos
de Trabalho da Comissão de Educação da Sociedade Brasileira de Computação
(SBC) atuam na elaboração de currículos e discutem questões relacionadas à
avaliação de cursos desta área de conhecimento.
Dentre estes grupos, o Grupo de Trabalho de Licenciatura em Computação
(GT3), que se preocupa em pautar questionamentos a respeito do curso de
licenciatura em computação de modo a complementar o currículo de referência da
SBC, discutiu e aprovou em assembléia em Salvador, durante o XXIV Congresso da
SBC no ano de 2004, a proposta de incluir conteúdos de computação no Ensino
Médio (Formação Geral).
Com isto, o grupo propõe desenvolver competências em computação desde
cedo, de forma a facilitar a integração do computador nas mais diversas profissões e
áreas do conhecimento e, conseqüentemente, ampliar o campo de trabalho dos
licenciados. Além disso, a introdução da computação no ensino médio pode
fomentar o interesse pela área aumentando o número de profissionais no país, fato
muito almejado como já comentado.
52
A questão que se pode ressaltar neste ponto está relacionada a definição de
qual o conteúdo a ser abordado em primeira instância, uma vez que os cursos de
computação e informática são compostos de diferentes e interligadas áreas de
conhecimento desenvolvendo diversas competências e habilidades.
Conforme descrito no Capítulo 2, entre as competências mais difíceis de
serem desenvolvidas estão as relacionadas ao desenvolvimento de algoritmos e
programas. Esta é uma forte razão para incluir tal temática no ensino médio, pois se
pressupõe que os futuros alunos dos cursos de computação teriam menos
dificuldade nessa área por já assimilarem certo conhecimento. E aqueles que se
dirigissem para outros ramos profissionais teriam desenvolvido competências de
resolução de problemas e formalização dos mesmos que seriam úteis em suas
respectivas áreas do conhecimento.
Segundo Valente (1999), fazer o aluno utilizar a máquina de modo a adquirir
conceitos computacionais, como princípios de funcionamento do computador,
noções de programação e implicações do computador na sociedade é uma
abordagem que tem sido bastante divulgada nos Estados Unidos da América como
computer literacy” e tem sido a solução encontrada por muitas escolas no Brasil
para inserir o computador no processo ensino-aprendizagem.
O autor ainda informa que o valor educacional da programação de modo
geral, está no fato de que um programa representa descrições escritas de um
processo de pensamento, o qual pode ser examinado, discutido com outros e
depurado. Neste sentido, este aprendizado influi no desenvolvimento de
competência associadas à resolução de problemas e estimula a interação e
colaboração que são ações características de ambientes de aprendizagem
construtivistas.
Assim, tem-se mencionado interessante ensinar o computador através da
programação, utilizando-o como uma ferramenta de aprender. Mas é importante
ressaltar novamente que o objetivo deste estudo é a inclusão de conteúdo de
computação para futuro aproveitamento no desenvolvimento profissional e, para isto,
deve-se promover o conhecimento básico que remete diretamente ao estudo de
programação dos primeiros períodos do ensino superior. Mesmo que o aluno não
53
venha a cursar computação, ele poderá aproveitar o aprendizado para aplicá-lo no
desenvolvimento de projetos de sua formação.
Este fato demonstra que se deve preocupar em usufruir do desenvolvimento
de competências em computação para motivar, aprofundar e até mesmo facilitar a
aprendizagem das mais diversas áreas do conhecimento, ou seja, promover a
interdisciplinaridade.
3.3. O projeto de uma Oficina
Com o objetivo de avaliar se a nova metodologia estimula e facilita o
aprendizado de programação e de averiguar os possíveis impactos da proposta feita
pelo GT3, foi desenvolvido o projeto de uma oficina de programação com uma carga
horária total de trinta e seis horas para ser realizada no final do ano letivo de 2004.
A proposta para realizar a oficina foi apresentada à direção do Colégio
Estadual Baltazar Carneiro localizado em Cardoso Moreira, um município da região
norte do Estado do Rio de Janeiro. O local foi escolhido principalmente pelo público
alvo que é composto por alunos com pouco acesso a recursos tecnológicos. É um
colégio pólo que possui um laboratório de informática com 10 computadores cedidos
em parte pelo Programa Nacional de Informática Educativa (ProInfo) e outros
adquiridos pela própria unidade escolar.
As ferramentas computacionais consideradas na oficina estavam disponíveis
na Internet e não demandavam de grandes recursos dos computadores do
laboratório. Os jogos da Fase 1 em sua maioria são desenvolvidos em Macromedia
Flash®. O fórum da Fase 2 foi criado a partir do PhpBB, uma ferramenta livre para
criação e gerenciamento de fóruns virtuais. Por fim, a ferramenta da Fase 3 foi o
Borland Turbo Pascal que é bastante utilizada em cursos de gradução.
No ensino médio, o estudo de lógica matemática (conectivos lógicos: e, ou e
não) não é explicitamente explorado como ocorre no nível superior. Assim, antes de
ingressar na formalização propriamente dita, ou seja, na segunda etapa da Fase 2,
foi incluído um conteúdo introdutório para tal estudo com o objetivo de capacitar os
54
alunos a desenvolver e avaliar condições lógicas que estarão presentes em seus
futuros programas.
Grande parte do material didático utilizado na oficina foi uma contribuição da
pesquisadora Carla Delgado, uma das autoras da estratégia proposta em Delgado et
al (2004) que foi utilizada como base para propor a nova metodologia aplicada na
oficina.
Para esta oficina, trabalhar com os alunos do segundo ano é a melhor opção
uma vez que os do primeiro ano talvez tenham menor nível de maturidade e os dos
terceiro estejam preocupados com o vestibular.
A argumentação do GT3 em relação ao objetivo da oficina incluía
desenvolver competências para a construção de soluções estruturadas para
problemas utilizando o computador. Com os alunos capacitados a aprender
ensinando o computador, ou seja, a programar, possibilitam aos professores
solicitarem a construção de programas de forma a fixar e aprofundar os conteúdos
abordados, bem como, utilizar-se de tais programas em sala de aula de forma
interativa contribuindo para a aprendizagem significativa
1
e promovendo a
interdisciplinaridade.
O colégio consentiu a realização da oficina, a qual ocorreu entre os meses
de novembro e dezembro de 2004. A meta com foco na unidade escolar era avaliar
a capacidade dos alunos desenvolverem o conteúdo e a estratégia aplicada de
forma a incluir o ensino de algoritmos e programação como uma disciplina na matriz
curricular e com isto obter resultados mais realistas, pois os alunos que participam
de uma oficina possuem a intenção de estudar o conteúdo oferecido, o que na
realidade de uma turma nos padrões deste nível escolar poderia prover resultados
diferentes porque nem todos estão propensos a se submeter a este estudo.
De modo a diagnosticar o nível dos usuários do laboratório de informática foi
desenvolvido pelos responsáveis do mesmo um pequeno questionário aplicado aos
alunos do Ensino Médio. Em relação aos alunos das três turmas do segundo ano,
público-alvo da oficina, o questionário apontou que 56% (40 alunos) do total de 71
1
A aprendizagem significativa é um processo por meio do qual uma nova informação se relaciona, de maneira substantiva
(não-literal) e não-arbitrária, a um aspecto especificamente relevante da estrutura cognitiva do indivíduo (Moreira, 1999, p. 13).
É o processo aprendizagem sob a perspectiva construtivista.
55
alunos possuem conhecimentos de informática, o que parece indicar que haverá boa
participação na oficina principalmente pelo fato de melhorar o currículo dos mesmos
neste quesito. Apesar deste resultado, 47,5% (19 alunos) dos alunos que possuem
conhecimentos de informática, não possuem noções de internet as quais se fazem
necessárias para o desenvolvimento da oficina. Entretanto, este fator não é de
grande dificuldade de ser superado.
Qualquer aluno do segundo ano do ensino médio da escola podia se
inscrever para participar da oficina, dado que ela seria realizada no turno da tarde e
as turmas existentes estudavam nos períodos matutino e noturno. Foram ofertadas
16 vagas e todas elas foram preenchidas no primeiro dia de divulgação.
3.4. Análises de Resultados Obtidos
Embora a oficina tenha iniciado com todas as 16 vagas disponíveis
preenchidas, a mesma finalizou com uma turma composta por apenas 5 alunos.
Este alto índice de evasão se deve a vários fatores:
Alguns alunos compareceram apenas os dois primeiros dias da oficina,
indisponibilizando a vaga para outros que estavam interessados em
participar. Não seria desejável incluir novos alunos, pois a aplicação da
metodologia já estava em andamento e, caso fosse feito, poderia dificultar o
andamento do processo. Poderia ser sugerida uma aula inaugural para
averiguar esta questão, mas infelizmente não havia tempo disponível para tal,
uma vez que a oficina foi realizada nos dois últimos meses do período letivo
Na ficha de inscrição era informado que o certificado seria entregue somente
aos alunos que tivessem presença mínima de 75%. Neste caso os alunos
poderiam ter somente 3 faltas injustificadas, o que acarretou a desistência de
alguns após já terem as 3 faltas.
Alguns alunos ingressaram na oficina já trabalhando e outros obtiverem um
emprego no decorrer de sua realização. Este fato contribuiu para a falta de
estudos extra-classe e da presença.
56
A época em que a oficina foi realizada contribuiu para que alguns alunos não
comparecessem as aulas e, conseqüentemente, prejudicou o aprendizado,
pois muitos estavam preocupados com as provas finais e as recuperações.
O gráfico da freqüência (Figura 3.4) mostra que a presença diária dos alunos
começou a se estabilizar na transição da primeira para a segunda fase. Observar
que cada uma das barras significa um dia de aula, com carga horária de 3 horas. O
maior índice de não comparecimento ocorreu no final da segunda fase quando o
colégio promoveu um evento no qual a maioria dos alunos estava participando. A
realização deste evento não foi considerada no planejamento do cronograma da
oficina e não havia mais como estendê-lo, pois o colégio entraria em recesso ao
final, o que acabou prejudicando em parte o aprendizado de alguns alunos.
Figura 3.4: Gráfico da Freqüência diária na oficina.
Durante a realização da primeira e segunda fase ocorreu elevado grau de
interação principalmente durante a discussão das soluções propostas, na utilização
dos jogos computacionais e no trabalho com o fórum. Esta abordagem de promover
o trabalho coletivo aumentou o desejo pela resolução os problemas propostos,
acarretando o desenvolvimento cognitivo quanto a este quesito sem a percepção
dos alunos.
10 12 17 19 24 26 01 03 10 15 17 22
Novembro Dezembro
57
As dificuldades apresentadas pelos alunos durante a oficina não diferiram
muito das apontadas na literatura e presentes no ensino superior. Destacam-se a
dificuldade de descrever formalmente condições lógicas em uma estrutura de
seleção, por exemplo; desenvolver programas que envolviam determinados
conteúdos de matemática; e em se adaptarem a formalização rígida da linguagem
de programação.
Ao final da oficina os alunos concluintes passaram por uma avaliação do
aprendizado através da resolução de problemas utilizando programas desenvolvidos
por eles próprios. O resultado desta avaliação mostrou que dos 5 alunos concluintes,
4 alcançaram capacidade satisfatória de programar.
Portanto, esta experiência demonstrou que a aplicação da metodologia
colabora para obtenção de melhores resultados. As dificuldades apresentadas não
se referem a todos os alunos e não interferiram negativamente no objetivo final,
conforme observado.
Alguns problemas propostos que envolviam conteúdo de matemática foram
questionados por um aluno que ao final se destacou no desenvolvimento de
programas, ou seja, o problema era em relação ao conhecimento de matemática e
não ao de programar o computador.
O processo de formalização gradual facilitou o desenvolvimento desta
competência, pois os alunos conseguiram expressar suas idéias nos algoritmos e
códigos-fontes que apresentavam. Os problemas que ocorriam nesta etapa se
referem a pequenos erros sintáticos que no geral são comuns até mesmo em
programadores experientes.
Além disto, a aplicação da metodologia promove atividades interativas e
colaborativas, elementos chaves de ambientes de aprendizagem construtivistas, que
tornam o aprendizado mais interessante e divertido.
Apesar disto, o professor é o principal responsável pelos resultados e por
isto este deve ter o perfil necessário para aplicar a metodologia, criar um ambiente
colaborativo e atuar como facilitador do processo.
58
Um questionário de avaliação do curso aplicado aos alunos mostrou que o
interesse pela computação aumentou excitando até mesmo o desejo de cursar o
nível superior e freqüentar outros cursos dentro da área. Os alunos também
informaram que a oficina contribuiu para um melhor aprendizado da matemática e da
física, fato este que levanta a questão da interdisciplinaridade proposta no ensino de
programação. Por fim, a metodologia também contribuiu com os objetivos do GT3 e
comprovou a direção do colégio que pode ser proveitoso utilizar conteúdos de
computação na formação dos alunos.
A experiência com a oficina permitiu desenvolver uma proposta, descrita no
Anexo I, de inclusão do conteúdo de computação na matriz curricular do ensino
médio.
Com o resultado positivo do uso das ferramentas computacionais sugeridas
aplicadas com uma metodologia baseada na resolução de problema incita o
desenvolvimento de um ambiente virtual que agregue toda a proposta discutida
neste capítulo. Para tanto, o Capítulo 4 apresenta o Ambiente Virtual para Ensino de
Programação como conseqüência de todo este estudo.
Capítulo 4 – O Ambiente Virtual para Ensino de Programação
De acordo com Giraffa, Marczak e Almeida (2003), nos dias atuais, com o
advento da Internet, as aulas puramente presenciais estão deixando de existir. A
sala de aula tradicional está sendo ampliada e enriquecida pelos recursos
disponibilizados para Educação a Distância.
A natureza hipermídia da internet permite criar materiais altamente
interativos, com ligações a diferentes conteúdos espalhados pelo mundo. Além disto,
têm-se facilidades de introdução de materiais hipermídia para ensino e de
intercâmbio de informações entre aprendizes em locais distantes entre si (Tori e
Mainente, 2002).
Assim, se mostra interessante mapear as características de um ambiente de
aprendizagem construtivista numa plataforma de ensino a distância ou, como é
possível chamar, ambiente virtual de ensino a distância. Este tipo de ambiente,
segundo Morgan (1995 apud Struchiner et al, 1998), deverá proporcionar um
contexto motivacional positivo, alto grau de atividade e interação dos alunos e uma
base de conhecimento bem estruturada a partir do qual eles possam partir.
Através de uma plataforma virtual os alunos podem estudar no momento que
considerar apropriado, segundo o ritmo de cada um e com disponibilidade do
material didático a qualquer momento.
Conforme mencionado nos capítulos anteriores, existem diversos problemas
associados ao ensino de algoritmos e programação. Tal conteúdo está presente em
cursos de engenharia e computação e visa a facilitação e aplicação de processos na
resolução de diversos problemas.
A constatação de que trabalhar uma metodologia associada com um
conjunto de ferramentas produziria resultados positivos quanto ao processo de
aprendizagem incentivou a criação da oficina de programação.
60
O bom resultado da validação da metodologia proposta através da oficina
demonstrou que é possível ampliar a motivação e criar novas expectativas dos
alunos.
Neste contexto, considera-se o Ambiente Virtual para Ensino de
Programação – AVEP, aplicável ao ensino a distância bem como no apoio ao
presencial, fruto da integração das ferramentas utilizadas na oficina com a
metodologia. Destaca-se que este ambiente é uma ferramenta computacional de
apoio ao ensino de programação que se fundamenta e guia uma metodologia, o que
representa seu diferencial, pois geralmente as ferramentas que são desenvolvidas
visam à execução de código ou possuem uma metodologia intrínseca a qual o
professor fica com a decisão de adotá-la ou não e, neste caso, ele nem sempre sabe
como fazê-lo, conforme comentado no Capítulo 2.
4.1. O Ambiente Virtual para Ensino de Programação (AVEP)
O Ambiente Virtual para Ensino de Programação foi desenvolvido de forma a
agregar as ferramentas computacionais propostas para suportar a metodologia e
guiar o conteúdo teórico do processo de aprendizagem.
A metodologia prevê o uso do computador a maior parte do tempo e o
ambiente proporciona num só lugar um contato maior para a realização das
atividades além de incluir o conteúdo teórico ampliando a margem de aceitação da
proposta por parte dos alunos.
Entre as atividades possíveis está a resolução de problemas através de
jogos computacionais, interação por meio de um fórum de discussão e o
desenvolvimento de código-fonte utilizando uma linguagem de programação.
O ambiente foi desenvolvido para funcionar numa plataforma com recursos
Web. Deste modo, o acesso poderá ser realizado em qualquer máquina conectada a
Internet ou numa Intranet dependendo do público alvo e o propósito ao qual se
destina. É interessante destacar que os requisitos para uso do ambiente são
mínimos em questão de hardware e software para os padrões atuais, uma vez que
61
necessita apenas de uma máquina capaz de executar os programas básicos para
acessar e utilizar serviços web. A figura 4.1 apresenta a página inicial do ambiente.
Figura 4.1. Tela de abertura do AVEP
O AVEP foi desenvolvido utilizando HTML (HyperText Markup Language),
JavaScript e PHP (acrônimo recursivo PHP: Hypertext Preprocessor). Alguns objetos
de aprendizagem, como os jogos, foram desenvolvidos em Adobe® Flash. Para o
armazenamento e gerenciamento das informações foi utilizado o sistema
gerenciador de banco de dados MySQL.
Assim, os requisitos mínimos para instalação e utilização do ambiente
compreendem a sua disponibilização num servidor web como o Apache ou o Internet
Information Service (IIS) com suporte ao PHP, a instalação do MySQL e um
navegador web com o plug-in Adobe® Flash Player instalado (disponível em:
http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=Shock
waveFlash&promoid=BIOW).
62
A Figura 4.2 apresenta a arquitetura do ambiente que é composta pelos
Componentes de Aprendizagem (Fase 1, Fase 2 e Fase 3), pelos Componentes de
Comunicação (Chat, Fórum, E-mail, Recados), pelo Componente de Armazenagem
e por um grupo de Atores (Aluno, Tutor e Administrador). Cada componente é
detalhado nas próximas subseções.
Figura 4.2. Arquitetura do AVEP
A aprendizagem irá fluir principalmente através da transição entre os
Componentes de Aprendizagem, ou seja, de uma fase para a outra segundo a
metodologia considerada. Neste processo, o Componente de Comunicação está
presente e contribui em todas as fases para que a aprendizagem seja mais eficaz,
organizada e tenha aspecto colaborativo, pois permite que os atores troquem
informações, se ajudem na partilha de questões, discernimentos e soluções; e
passem a confiar uns nos outros para atingir o objetivo proposto. O Componente de
Armazenagem permite fornecer material de apoio agregando maior valor à teoria
inclusa no ambiente.
63
4.1.1. Atores
Um ator é considerado neste contexto como um indivíduo que age ou
interage através do ambiente. A ação ou atuação do ator sobre o ambiente irá
depender da sua classificação no grupo de atores que é composto pelo Aluno,
considerado o agente da aprendizagem; pelo Tutor, que elabora os problemas e
busca manter a motivação; e pelo Administrador que gerencia tutores e mantém a
disponibilidade e a funcionalidade do ambiente. Assim, a atuação segue uma
hierarquia na qual o nível mais alto é representado pelo Administrador, o ator
mediador é o Tutor e o nível mais baixo é ocupado pelo Aluno.
Cumpre ressaltar que essa hierarquia não pretende estar associada a
hierarquia de saberes. Ela diz respeito, sobretudo, ao acesso as funcionalidades do
ambiente, diferentes para os diversos perfis de atores.
É importante entender o papel de cada ator, pois a hierarquia delimita os
privilégios e a atuação principalmente sobre os Componentes de Aprendizagem que
são a base do processo.
4.1.1.1. Administrador
Como o Administrador está no mais alto nível da hierarquia de atores, possui
a maior gama de privilégios de acesso ao ambiente, inclusive aqueles liberados para
os atores dos outros níveis. A Figura 4.3 apresenta as ações do Administrador sobre
o ambiente.
Quando alguém deseja atuar como Tutor no ambiente, deve preencher um
cadastro que é submetido ao Administrador (Figura 4.4) o qual está incumbido de
analisar a solicitação feita e liberar o acesso. A partir dessa liberação, o tutor pode
executar suas funções, descritas na próxima subseção.
64
Figura 4.3. Ações do Administrador
A atuação do Administrador envolve o acesso a todos os componentes do
ambiente. Quando há algum tópico inadequado no Componente de Comunicação
Fórum ou um arquivo no Componente de Armazenagem que não condiz com o
processo de aprendizagem em questão é de responsabilidade do Administrador
editá-los ou eliminá-los, conforme o caso, e de advertir os responsáveis pelo fato de
modo a manter a seriedade da proposta.
Figura 4.4. Gerência de Tutores
65
Quando o Aluno ou Tutor detecta qualquer espécie de erro durante o
trabalho com o ambiente como, por exemplo, defeitos na aparência, dificuldades
para dispor problemas e soluções, indisponibilidade de serviços de banco de dados
e web, ou seja, problemas que necessitam da manipulação da estrutura interna que
interferem no perfeito funcionamento do ambiente; eles devem comunicar o fato ao
Administrador, pois este detém privilégios para procurar e proporcionar possíveis
soluções, ou seja, ele também é responsável por realizar a manutenção do ambiente
segundo os requisitos de hardware e software que se fazem necessários.
O papel do Administrador, portanto, é tanto técnico quanto pedagógico.
4.1.1.2. Tutor
O Tutor desempenha o papel do professor que num ambiente de
aprendizagem busca orientar o processo de aprendizagem e contribuir para a
motivação dos alunos. Suas ações estão dispostas na Figura 4.5.
Este ator não precisa ser necessariamente o professor de alguma turma,
pois sua atuação pode ser desempenhada por qualquer indivíduo que entenda
completamente a metodologia utilizada, que tenha um bom conhecimento do
conteúdo abordado e que seja capaz de executar com eficácia as atribuições a ele
conferidas.
66
Tutor
Elaborar e
Gerenciar Problemas
Criar e Gerenciar
Turmas
Gerenciar Alunos
Orientar e Fomentar
a Aprendizagem
Figura 4.5. Ações do Tutor
Na hierarquia de atores, o Tutor está no nível intermediário, pois sua
atuação tem foco nos trabalhos desenvolvidos pelos seus alunos. Assim, não há
envolvimento com as atividades desenvolvidas por outros tutores, a não ser a troca
de idéias e experiências possibilitada pelo contato via Componentes de
Comunicação. Esta imposição objetiva manter a privacidade e o respeito aos
tutores, além de contribuir para a segurança do ambiente.
Uma das ações do Tutor é o desenvolvimento e a gestão dos problemas que
são disponibilizados para os alunos e que seguem o conteúdo definido nos
Componentes de Aprendizagem. A Figura 4.6 apresenta a tela da gestão de
problemas.
É importante destacar que ao definir um problema deve-se buscar manter o
aspecto construtivista do ambiente através do reaproveitamento de questões e
soluções dos próprios alunos, de uma fase para outra, durante o processo de
aprendizagem. Este direcionamento deve ser considerado pelo Tutor em sua
atuação.
67
Figura 4.6. Gestão de Problemas
Para iniciar o estudo com o ambiente, o Aluno deve ser atribuído a uma
turma definida pelo Tutor (Figura 4.7). Deste modo haverá uma melhor organização,
gestão de alunos e conseqüente atuação.
68
Figura 4.7. Atribuição de Alunos a Turma
O Tutor deve orientar a aprendizagem propondo prazos para realização de
atividades através do Componente de Comunicação Recados, analisando as
soluções dos alunos e direcionando-os para que as competências definidas em cada
fase sejam alcançadas, tendo em vista deixar o aluno ser responsável pelo seu
próprio desenvolvimento cognitivo (Figura 4.8).
Com o objetivo de ampliar o interesse pelo conteúdo distribuído nos
Componentes de Aprendizagem, os tutores podem disponibilizar vários materiais de
apoio no Componente de Armazenagem. Neste ponto é válido enaltecer que
fomentar a aprendizagem é uma questão chave para melhorar os resultados com o
ambiente. O Tutor é o elemento chave neste processo.
69
Figura 4.8. Análise da Solução do Aluno
70
4.1.1.3. Aluno
O Aluno apesar de estar no último nível na hierarquia de privilégios de
acesso ao ambiente é o principal ator do ambiente, pois o mesmo foi proposto para
proporcionar e facilitar o aprendizado deste ator no que se refere à programação de
computadores. A Figura 4.9 apresenta as ações referentes ao Aluno quanto a
utilização do ambiente.
Coordenar a
Aprendizagem
Construir o
Conhecimento
Aluno
Interagir e
Colaborar
Figura 4.9. Ações do Aluno
É através de sua atuação sobre os Componentes de Aprendizagem que o
mesmo deve desenvolver um conjunto de subcompetências necessárias para a
construção de algoritmos e programas. Durante este processo, o Aluno recorre ao
Tutor que o auxilia a todo o momento.
A partir dos Componentes de Comunicação disponíveis durante a
aprendizagem, o Aluno poderá agregar maior conhecimento através da troca de
experiências vivenciadas por outro aluno e da comunicação com o tutor. No
Componente de Armazenagem deve haver material de apoio que também contribua
para o aumento do conhecimento e, portanto, o Aluno deverá fazer uso deste.
É possível notar que apesar do ambiente de certa forma conduzir o processo
de aprendizagem organizado pelo Tutor, o Aluno detém a responsabilidade de
agregar valor ao próprio conhecimento a partir de todo o ferramental disponível, se
71
coordenando de acordo com as orientações a ele fornecidas. Assim, ele é livre para
atuar no momento que desejar, mas seguir as sugestões do Tutor de prazos e
vertentes de solução tornam o aprendizado mais eficiente. A interface do ambiente
segundo a visão do Aluno é apresentada na figura a seguir.
Figura 4.10. Interface do Aluno
4.2. Componentes
Um componente é uma composição de elementos que possuem um objetivo
comum. No caso do AVEP, cada componente contribui de certa forma para a
aprendizagem de programação. Assim, propõem-se:
72
Componentes de Aprendizagem que fornecem todo o conteúdo e
estrutura necessária para o aprendizado;
Componentes de Comunicação que disponibilizam mecanismos para a
convivência entre os participantes do processo de ensino e
aprendizagem, representados pelos Atores;
Componente de Armazenagem que virtualiza um depósito de material
de apoio que geralmente é fornecido pelo professor em suas aulas.
Como é possível perceber, tais componentes compõem a arquitetura do
ambiente, compreendendo toda a estrutura metodológica apresentada no capítulo
anterior. A Figura 4.11 exibe como estão dispostos os componentes no AVEP.
Figura 4.11. Componente no AVEP
Componente de Armazenagem
Componentes de Comunicação
Componentes de Aprendizagem
73
4.2.1. Componentes de Aprendizagem
Como o próprio nome indica, os Componentes de Aprendizagem são
responsáveis por fornecer os elementos necessários para que ocorra a
aprendizagem. Cada componente representa uma fase da metodologia considerada.
Para o Administrador e o Tutor não existem restrições quanto à interação
com os componentes de aprendizagem, o que difere da situação do Aluno, cuja
interação é gradual, ou seja, ele inicia a aprendizagem a partir do primeiro
componente (Fase 1) de aprendizagem e, na medida em que desenvolve as
atividades propostas e adquire as competências estabelecidas para o mesmo, passa
para o próximo componente e assim por diante até ter concluído a aprendizagem do
conteúdo proposto.
A transição entre fases é liberada pelo Tutor, o qual avalia as soluções
apresentadas pelo aluno e, a partir disto, tenta identificar se as competências
almejadas para uma determinada fase estão sendo alcançadas.
Aluno
Fase 1
Fase 2
Fase 3
Lista de Problemas
Jogos
Fórum
Formalização
Programação
Figura 4.12. Seqüência da Aprendizagem
74
Cada fase apresenta um conjunto de etapas a serem cumpridas seguindo
uma seqüência de aprendizagem (Figura 4.12). Na Fase 1, o Aluno deverá cumprir
uma etapa composta por uma lista de problemas e uma outra etapa constituída de
um conjunto de jogos computacionais. Na Fase 2, há um fórum virtual de discussão
num primeiro momento, passando posteriormente para um processo de fomalização.
Finalmente, na fase três há uma etapa única que compreende a atividade de
programação propriamente dita. Grande parte das atividades e conteúdo teórico
disponibilizado no ambiente foi contribuição de Carla Delgado, uma das autoras da
proposta inicial da metodologia.
Pode-se questionar aqui a necessidade de seguir o padrão de etapas
segundo uma abordagem comportamentalista, isto é, não deixando o aluno decidir a
etapa que deseja desenvolver num determinado momento. Entretanto, a
aprendizagem visa à construção do conhecimento pela própria interação do aluno
com o ambiente, o qual irá proporcionar um conjunto de elementos do cotidiano nos
problemas propostos de modo ao aluno vivenciar tal experiência e que será
reaproveitada numa determinada etapa posteriormente. Neste vertente
construtivista, o tutor pode propor, por exemplo, um problema que envolva cálculo
da média aritmética em alguma etapa da Fase 1, que pode ser aproveitado na Fase
2 para desenvolver a formalização e utilização de novas estruturas, como a estrutura
de seleção “Se” para verificar se um aluno foi ou não aprovado a partir da média,
culminando na tradução deste problema durante a Fase 3 num programa escrito em
linguagem Pascal.
75
Solicitar Problema
Solucionar Problema
Verificar “status” e
{Comentário}
Aluno
Solicitar Problema
Solicitar e
Analisar Solução
{Comentar} e
Definir “status”
Soluções e
Comentários
Problemas
Tutor
1
2
3
4
5
6
Figura 4.13. Avaliação dos Problemas
A transição entre as etapas e fases é realizada a partir do cumprimento de
todas as tarefas de uma determinada etapa ou fase, dependendo do caso, segundo
a avaliação do tutor. A Figura 4.13 mostra que, em cada fase, o aluno solicita o
problema referente à etapa na qual se encontra (1), propõe sua solução (2) e
aguarda a avaliação do tutor. Este também solicita os problemas de uma
determinada etapa da fase onde o aluno se encontra (3), analisa a solução
apresentada (4). Se for o caso, faz um comentário (5) de modo a orientar o aluno.
De qualquer maneira, deve-se atribuir um “status” (5) que indica a conclusão ou a
necessidade de revisar a solução. A partir disto, o aluno verifica o “status” (6) de sua
solução e, caso seja necessário, propõe uma outra (2) conforme os comentários do
tutor.
Segundo Tobar et al (2001), um dos problemas no processo de ensino de
programação é a dificuldade encontrada pelos professores para acompanhar
efetivamente as atividades laboratoriais, dado o grande número de estudantes
geralmente sob sua supervisão. Ao analisar e comentar a solução do aluno, o tutor
estará orientando-o individualmente, ou seja, acompanhando efetivamente a
aprendizagem de cada aluno. Ainda que não diminua o trabalho do professor (ao
contrário, aumenta, na medida em que cada aluno espera o feedback do professor
no ambiente), permite atendimento a todos. Também deve-se considerar que o tutor
76
agora dispõe de um tempo maior para fazer este acompanhamento do que
aproximadamente 2 horas de uma aula presencial, mas tempo esse multiplicado
pela quantidade de alunos da turma.
A avaliação do tutor é realizada a partir das competências a serem
adquiridas numa determinada fase, conforme comentado no capítulo anterior. A
seguir cada componente é descrito e as competências correspondentes são
indicadas.
4.2.1.1. Fase 1 – “Resolução de Problemas”
O objetivo deste componente é permitir ao Aluno trabalhar aspectos
cognitivos da resolução de problemas. Este componente possui dois elementos:
uma lista (ou questionário) de problemas (Figura 4.14) envolvendo matemática
básica e lógica; e um conjunto de jogos computacionais (Figura 4.15) que envolvem
raciocínio lógico dispostos num repositório, permitindo uma breve descrição da
estratégia utilizada o que de forma imediata auxiliará o processo de aprendizagem
proposto na próxima fase. Ao final o Aluno terá exercitado sua capacidade de
resolver problemas.
Figura 4.14. Etapa 1 da Fase 1 – Lista de Problemas
77
Todos os jogos utilizados no ambiente foram fornecidos por Santos (2006),
cujo trabalho apresenta uma descrição completa de cada um deles e de utilizá-los
no ensino de programação.
Figura 4.15. Etapa 2 da Fase 1 – Jogos
Além dos alunos desenvolverem a cognição para resolução de alguns
problemas a partir destes jogos, estes apresentam de forma intrínseca conteúdos
teóricos que poderão ser aproveitados nas outras fases conforme previsto na
metodologia. Retomando ao exemplo do jogo dos vasos de vinho apresentado no
capítulo anterior: “Dividir 8 litros de vinho em 2 porções de 4 litros manipulando
apenas três vasos de 8, 5 e 3 litros, respectivamente” que pode ser utilizado para
explicar o conceito de variável e de atribuição de valores.
78
4.2.1.2. Fase 2 – “Formalização”
O objetivo é capacitar o Aluno a descrever formalmente seu raciocínio. Este
processo ocorre de forma gradual, partindo da linguagem natural e finalizando com a
construção de algoritmos em pseudo-código.
Este componente de aprendizagem baseia-se na disponibilização de
problemas, durante a primeira etapa através de um fórum (Figura 4.16), no qual o
Aluno propõe sua solução a ser avaliada por outras instâncias de Aluno e pelo Tutor.
É pretendido que toda a comunicação associada ao problema seja realizada através
deste fórum para incentivar competências como:
1. O aperfeiçoamento da descrição formal de processos;
2. Correção de soluções;
3. Identificação de diferentes soluções para o mesmo problema e da
importância da formalização.
Figura 4.16. Etapa 1 da Fase 2 - Fórum
79
Figura 4.17. Etapa 2 da Fase 2 - Formalização
A partir da segunda etapa (Figura 4.17) desta fase é apresentado um
conteúdo teórico associado a diversos problemas divididos em tópicos que direciona
o aluno a descrição em pseudo-código. De forma gradual, utilizando o exemplo
80
clássico de cálculo de média aritmética, conceitos de variáveis, estrutura básica,
seqüenciamento, estrutura de seleção, aninhamento, entre outros são trabalhados.
4.2.1.3. Fase 3 – “Construção de Programas”
Este componente visa o processo de tradução dos algoritmos desenvolvidos
na Fase 2 para uma linguagem de programação, no caso, Pascal. Fornece recursos
para a aprendizagem básica da linguagem como conteúdo didático e ambiente de
construção, depuração e execução de programas (Figura 4.18).
Figura 4.18. Desenvolvimento de Programas (Fase 3)
81
Neste componente os alunos irão consolidar as competências da fase
anterior, incluindo o reconhecimento e utilização de estruturas de repetição,
identificar e até mesmo utilizar estruturas e definições não consideradas no
ambiente.
4.2.2. Componentes de Comunicação
Chat, fórum, e-mail e recado são os Componentes de Comunicação do
ambiente. A função destes componentes é permitir a comunicação entre os atores
do ambiente.
Figura 4.19. AVEP Fórum
82
Figura 4.20. AVEP E-mail
O chat é o componente que permite a comunicação síncrona entre os
atores. O fórum (Figura 4.19) é um espaço de discussão assíncrono, ou seja, que
não é feita em tempo real. E o e-mail (Figura 4.20) permite a troca de mensagens
através do correio eletrônico. O componente recado (Figura 4.21) é utilizado pelo
Tutor para fornecer informações a todos os alunos de uma determina turma.
Figura 4.21. AVEP Recado
83
4.2.3. Componente de Armazenamento
Este componente (Figura 4.22) é um repositório de dados para a inclusão de
material de apoio, tais como livros eletrônicos, apostilas e links, que auxiliem o
processo de aprendizagem, ou seja, qualquer material que agregue valor a
aprendizagem. Está sempre disponível, porém a inclusão de conteúdo está atribuída
ao Tutor e ao Administrador evitando assim que qualquer outro tipo de material que
foge ao conteúdo abordado seja disponibilizado.
Figura 4.22. AVEP Armazenamento
84
4.3. Validação do Ambiente
A oficina de programação realizada com alunos do ensino médio, descrita no
capítulo anterior, demonstrou bons resultados no que se refere a aplicação da
metodologia. As expectativas iniciais foram as mesmas com o ambiente.
Para tanto, foi proposto um curso a distância de algoritmos e programação
com alunos do primeiro período do curso de graduação em Ciência da Computação
do Centro Universitário Metodista Bennett (UniBennett).
O curso foi realizado no período de fevereiro a abril de 2006 e iniciou com 23
alunos inscritos dos quais 5 não chegaram a freqüentar e 2 apenas acessaram o
ambiente, mas não se propuseram a resolver algum problema. Logo, houve um total
de 16 alunos que participaram do curso. Este público alvo em sua maioria é
masculino, 12 homens e 4 mulheres, com idade média de 27 anos.
De modo a avaliar o perfil destes alunos e o conhecimento de programação
foi fornecido um pequeno teste que constava de duas questões:
1. Dado que:
X = 0;
Y = 0;
Enquanto X<10 faça
Qual será o valor de Y ao final deste procedimento? _______
2. Considerando apenas as seguintes instruções:
a) X = 0;
b) X = X + 1;
c) Z = X;
d) Repita Y vezes
Onde X, Y e Z representam, cada uma, um número inteiro qualquer.
Descreva um procedimento utilizando as instruções indicadas para calcular o valor de Z
dado que Z = X + Y.
X = X + 1;
Y = Y + X;
85
A primeira tinha o objetivo de avaliar a capacidade interpretação e execução
de um procedimento no modelo computacional. A segunda questão propôs o
desenvolvimento de um pequeno procedimento a partir de um conjunto de
instruções pré-estabelecidas tendo em vista avaliar a competência de estruturar o
código de um programa dada a dificuldade identificada no público alvo em relação
as competências associadas a algoritmos e programação.
O resultado desta avaliação mostra que apenas 3 alunos conseguiram
interpretar corretamente o primeiro problema e a maior dificuldade estava em utilizar
a estrutura de repetição. A maioria não soube como resolver a segunda questão.
Com isto, pôde-se pressupor que haveria certo grau de favorecimento para análise
do ambiente, ou seja, que a validação proposta produziria resultados mais realísticos
em termos de aprendizagem.
Freqüência do AVEP
0 5 10 15 20 25
FEV
MA R
ABR
Média de Acessos
Figura 4.23. Gráfico da Freqüência do AVEP
O gráfico da Figura 4.23 exibe dados com relação à freqüência ao AVEP
representada pela média de acessos para cada aluno durante o mês. Cada fase da
metodologia durou aproximadamente um mês, assim fevereiro corresponde a Fase
1, março a Fase 2 e, por fim, abril a última fase.
86
É natural a Fase 2 compreender um número maior de acessos, pois o
processo de formalização é lento e por isto havia uma quantidade maior de
problemas a serem resolvidos pelos alunos e revisados pelo tutor.
Durante a validação ocorreram vários problemas de conexão do servidor
com a Internet e isto acarretou muito transtorno aos alunos que em certo ponto se
sentiram desmotivados ao estudo de tal conteúdo com o ambiente.
Por outro lado, no decorrer do curso os alunos foram demonstrando que
estavam adquirindo as competências relacionadas à etapa em que estavam. Ao final
da primeira fase foi observado que os alunos aprimoraram a capacidade de
descrever melhor a solução de problemas em linguagem natural e até mesmo
procurar certa simbologia para facilitar tal descrição. Por exemplo: o jogo dos
Limpadores de Vidro (Figura 4.24) fornecido durante a segunda etapa desta fase,
cujo objetivo é posicionar os 5 limpadores entre o 21° e o 25° andar, inclusive, para
que eles possam sair para o almoço, mas deve ser considerado que a roldana
estava com problemas e que a cada movimentação, 2 limpadores sobem 8 andares
ou descem 13.
Figura 4.24. AVEP: Exemplo de Jogo – Limpadores de Vidro
A partir deste jogo um aluno propôs a seguinte solução: “Primeiro subi os
limpadores que estavam nos andares 17 e 19 e os mesmos foram para os andares
87
25 e 27, depois subi os limpadores que estavam nos andares 27 e 31 ...”; já outro
aluno B propôs para o mesmo jogo: “[Nomeei os elevadores; 1 - 2 - 3 - 4 - 5];[S:
subir, D: Descer] INICIO D2,3 | D4,5 | D1,5 | S2,3 | S3,4 ...”. É interessante notar que
eles procuram certa simbologia para descrever sua estratégia, o que remete ao
conceito de variáveis.
Outro exemplo é o jogo dos vasos de vinho. A resposta de um aluno foi: ”Do
vaso 8 para o vaso 5; do vaso 5 para o vaso3; do 3 para o 8; do 5 para o 3; do 8
para o 5; do 5 para o 3 e do 3 para o 8. Assim terei 4 no vaso 8 e 4 no vaso 5”.
Enquanto outro aluno apresentou uma descrição diferente: “v8--> v5, v5 -->v3, v3 -->
v8, v5-->v3, v8-->v5, v5-->v3, v3-->v8”.
Quando os alunos erram a proposta de solução, eles passam a
compreender seguindo a própria descrição que existe a necessidade de agregar
uma determinada riqueza de informações de modo a não haver dúvidas durante a
execução. O aluno C chegou a esta conclusão ao participar do fórum da fase 2:
Realmente vendo por este lado a economia de palavras tornou confusa a seqüência
de informações, mas vou tentar explicar....”.
Na fase 3, os alunos apresentaram os erros que são comuns nesta etapa
como definir os tipos de variáveis de forma errada ou esquecer certos requisitos
sintáticos como o ponto-e-vírgula. Porém a lógica dos programas já se apresentou
bastante coerente, o que neste ponto do curso pode ser considerado um bom
indicador de sucesso.
Quantidade de Alunos
Etapa 1 - Problemas 4
Etapa 2 - Jogos 0
Etapa 1 - Fórum 0
Etapa 2 - Formalização 9
Fase 3 Programação Pascal 3
TOTAL
16
Fase 1
Fase 2
Tabela 4.1. Resultado da Oficina
88
Como resultado, dos 16 alunos atuantes, a metade obteve acima de 70% de
aproveitamento do curso (Tabela 4.1), isto é, conseguiram praticamente finalizar a
segunda fase. Isto é animador quando se compara com o resultado da oficina
realizada presencialmente com alunos do ensino médio, pois mostra que em
qualquer um dos modos de apresentar o conteúdo e gerir a metodologia há uma
melhoria significativa na aprendizagem. Basta notar que num mesmo período de
tempo ao qual foram realizadas as oficinas, muitos professores que não utilizam a
metodologia considerada não conseguem obter 50% de aproveitamento da turma
para o mesmo conteúdo.
Ao final do curso foi fornecida uma ficha de avaliação do ambiente para os
alunos, que está disponibilizada no Anexo II. Esta ficha é constituída de 3 blocos de
avaliação: o primeiro visa obter informações sobre o objetivo do ambiente, ou seja,
se o mesmo contribui de algum modo para o aprendizado de programação; o
segundo bloco busca avaliar a aparência (“layout”) do ambiente; por fim, preocupa-
se em identificar se os recursos utilizados atendem as expectativas dos alunos.
Esta avaliação revelou que há necessidade de rever os Componentes de
Comunicação, pois os mesmos não apresentam todas as funcionalidades
desejadas. Por exemplo, o E-mail permitia apenas o envio de mensagens não
havendo uma gestão destas como qualquer gerenciador. Pequenos detalhes
técnicos também foram questionados, como o tamanho da fonte e a padronização
de botões.
Apesar destes questionamentos, a maioria dos alunos demonstrou que os
Componentes de Aprendizagem contribuem ao estudo de programação e que o
ambiente em certo ponto atendeu as expectativas. Portanto, a estratégia
considerada favorece o aprendizado de programação e que a continuidade deste
trabalho poderá fornecer melhores resultados.
Capítulo 5 – Considerações Finais
A computação ocupa uma posição privilegiada na atual sociedade. Para
tanto, considera-se que uma forma fundamental para que um país seja
desenvolvedor de tecnologia de informação é o desenvolvimento de recursos
humanos com amplas competências nessa área.
É fundamental que se aprimore a qualidade do processo de ensino e
aprendizagem nos cursos da área de computação e informática. Um dos gargalos
destes cursos é o alto índice de reprovação e/ou evasão, desde o início do curso,
em disciplinas relacionadas a algoritmo e programação. Este é um dos fatores que
fazem com que a quantidade de egressos concluintes seja consideravelmente
inferior à quantidade de entradas nesses cursos.
A partir deste fato foi realizado um levantamento literário em âmbito nacional
e internacional a fim de apresentar uma visão crítica do que tem sido proposto por
algumas das pesquisas envolvidas na melhoria do processo de ensino e
aprendizagem de algoritmos e programação. Foram encontrados 105 artigos
relacionados e a análise destes indica que há três vertentes na busca de soluções
para os problemas do processo: Ferramentas, Estratégias e a união de ambas. O
resultado desta análise mostra que há evidências de que a união de ferramentas
computacionais e estratégias pedagógicas adequadas culminam em melhores
resultados. Porém, o que se observa é uma tendência em tratá-las separadamente.
A partir destas constatações foi definida uma metodologia baseada na
resolução de problemas, que agrega um conjunto de ferramentas computacionais, e
que foi validada através de uma oficina com alunos do ensino médio, seguindo uma
proposta do Grupo de Trabalho em Licenciatura em Computação (GT3) da
Sociedade Brasileira de Computação (SBC).
A oficina permitiu comprovar que a idéia do GT-3 é factível, ou seja, que
alunos do ensino médio são capazes de desenvolver tal conteúdo sem
necessariamente estarem inseridos num curso técnico, o que pode estimular o
90
professor a aproveitar a nova competência do aluno para promover o
aprofundamento de conteúdos de sua disciplina e, conseqüentemente, a
interdisciplinaridade.
Além disso, a oficina contribuiu para ampliar o interesse pela área da
computação e contribuiu para o aprendizado de outros conteúdos conforme relatado
pelos próprios alunos e que poderá ainda ser mais explorado.
O resultado obtido na avaliação dos concluintes da oficina permitiu também
projetar as expectativas da inclusão do tema algoritmos e programação na matriz
curricular. Neste caso, os alunos terão, em princípio, maior comprometimento com o
processo considerando-se a obrigatoriedade de cumprimento das atividades e o
professor terá disponibilidade para abordar melhor o conteúdo devido à carga
horária superior. O mais importante, porém, da integração na matriz curricular é a
possibilidade de fazer algum trabalho envolvendo temas de outras áreas do
conhecimento.
A partir destas constatações com a oficina foi desenvolvido o Ambiente
Virtual para Ensino de Programação (AVEP) composto por conjunto de ferramentas
computacionais e com o objetivo de guiar a aplicação da metodologia.
O AVEP é uma proposta com base em princípios construtivistas, ou seja,
busca proporcionar um contexto motivacional positivo, alto grau de atividade e
interação dos alunos e uma base de conhecimento bem estruturada. Neste
ambiente, o aluno é responsável pela construção de seu conhecimento e o professor
deixa de ter um papel de instrutor para ser o facilitador do processo.
Uma validação do ambiente com alunos de graduação em ciência da
computação demonstrou que 50% dos alunos inscritos num curso de programação
com duração de 3 meses alcançaram rendimento superior a 70%. Este é um
resultado positivo já que muitas vezes os alunos não conseguem alcançar tal
aproveitamento em um período letivo que geralmente é de 4 meses.
91
5.1. Contribuições
Com resultado interessante o AVEP promoveu certas contribuições no que
tange aos problemas do processo de ensino e aprendizagem de programação. Entre
eles podemos citar:
Problema Solução
O professor preocupa-se em mostrar o
que sabe ou utiliza uma didática
inadequada ou há falta de metodologia.
O próprio AVEP guia o processo de
aprendizagem e o trabalho do professor,
que é chamado tutor, visa facilitar este
processo.
O professor não reconhece as
habilidades inatas dos alunos.
O AVEP permite um contato direto do
tutor com a solução do aluno, o que
permite demonstrar o que ele realmente
sabe.
Dificuldades em promover a cooperação
e a colaboração.
Os Componentes de Comunicação
promovem tais atividades.
O aluno não consegue descrever uma
proposta de solução com a formalidade
rígida da linguagem de programação.
O processo de formalização é gradual,
isto é, o aluno inicia sua descrição em
linguagem natural e aos poucos irá
tornando-a formalizada segundo um
modelo computacional.
O professor tem dificuldade de
acompanhar efetivamente as atividades
dos alunos.
Um dos comprometimentos do tutor é
avaliar as atividades de cada aluno.
Elevado grau de timidez dos alunos e
facilidade de se dispersarem durante a
aprendizagem.
O aluno terá uma concentração maior,
pois estará interagindo com o AVEP.
Tabela 5.1. Contribuições do AVEP
92
Problema Solução
Crença de que a disciplina é um
obstáculo difícil de superar.
Os jogos divertem e contribuem para
que a disciplina não seja vista desta
forma. Além disto, ferramentas como o
Fórum permitem o trabalho coletivo no
sentido de superar as dificuldades.
O aluno estuda na véspera. As resoluções das atividades irão
dependerem do estudo periódico do
aluno, acompanhando as fases da
metodologia.
5.2. Dificuldades
Não foi possível realizar a validação do ambiente com alunos da Engenharia
de Produção da Universidade Estadual do Norte de Fluminense devido a não
disponibilização de um laboratório de computadores com Internet. Por este motivo
que esta validação foi realizada em outra instituição de ensino superior.
Também não foi possível disponibilizar o AVEP num servidor na
universidade, pois o tempo disponível para iniciar a validação não era suficiente para
resolver a parte burocrática para tal. Por tanto, o ambiente foi instalado e
configurado numa máquina residencial com acesso em banda larga.
Quanto ao uso do ambiente, a maior dificuldade se concentrava em avaliar
as soluções dos alunos. Basta imaginar que em uma turma com 16 alunos, se para
cada um fosse distribuídas 10 atividades, o tutor teria que avaliar 160 propostas de
solução. É um trabalho árduo e que ocupa muito tempo.
93
5.3. Trabalhos Futuros
Apesar do bom resultado do curso com os alunos do nível superior, foi
realizado apenas um único experimento até o presente momento e, portanto, não se
pode generalizar conclusões deste estudo. Neste caso, considera-se que existe
necessidade de melhorar os resultados e como a base do processo de
aprendizagem é a motivação do aluno, esta pode ser favorecida pela utilização de
agentes ou assistentes inteligentes animados.
A proposta é fazer com que os agentes comparem as soluções dos alunos
com modelos de soluções fornecidas pelo tutor e dependendo do resultado será
disparada uma ação de modo a orientar e motivar o aluno. Assim, o uso de agentes
pode aumentar a confiança do usuário e melhorar a comunicação entre o homem e
máquina de modo a facilitar o aprendizado.
A validação do ambiente permitiu também identificar diversas características
que se fazem necessárias para um melhor aproveitamento do mesmo.
Existe a necessidade de separar os alunos em grupos principalmente
quando se está utilizando o fórum da etapa 1 da Fase 2 e está sendo fornecido um
curso a distância. A justificativa para tal divisão se deve ao fato de que o ingresso
para a próxima etapa será permitido se o tutor considerar que os alunos adquiriam a
competência definida para tal etapa que, neste caso, é a percepção da necessidade
da formalização. Como é uma atividade coletiva, os alunos com maior facilidade irão
concluir a etapa e os que tiverem mais dificuldade ou estiverem iniciando a etapa
não terão mais atividade para completar, sendo encaminhados diretamente para a
etapa seguinte.
Por isto, fica a critério do tutor definir os grupos de alunos de modo que os
alunos realmente alcancem tal competência. Se mesmo assim ocorrerem
dificuldades, os alunos poderão ser liberados e as competências associadas
poderão ser trabalhadas nas etapas seguintes. Num curso presencial esta
necessidade de divisão em grupos é menor, pois os alunos estarão trocando
informações praticamente num mesmo momento havendo um acompanhamento da
turma de forma geral.
94
Acompanhar o aprendizado individual de cada aluno em uma turma grande é
uma tarefa dispendiosa para o tutor, pois é necessário muito tempo para analisar as
soluções propostas para os diversos problemas. Muitas vezes o tutor não tem tempo
disponível para tal e, portanto, faz-se necessário que o ambiente permita o
acompanhamento do processo por mais de um tutor ou que sejam identificados
vasonciais alunos-monitores para atuarem no ambiente fazendo a mediação desta
tarefa. A inserção de agentes inteligentes também contribui na redução do trabalho
do tutor.
Com isto, o tempo para tutoria dos alunos poderá ser menor uma vez que o
atendimento será mais eficiente considerando que os alunos com maior facilidade
poderão desenvolver o conteúdo mais rapidamente.
Na Fase 3, ao invés de utilizar um software externo ao ambiente para
execução dos programas em Pascal, seria interessante adaptar um compilador que
fornecesse a possibilidade do aluno fazer o download de seu programa compilado
ou até mesmo uma execução on-line, uma vez que os programas nessa fase (nível
introdutório) apresentam poucos comandos.
Pode-se questionar a sobrecarga de processamento quando muitos alunos
compilam o código ao mesmo tempo. Neste caso, deve-se analisar o público que irá
usufruir do ambiente e a capacidade dos dispositivos de hardware do servidor para
indicar que alternativa usar.
Outro ponto interessante a incluir no AVEP são recursos da hipermídia
adaptativa. A partir do modelo do aluno seria possível adaptar os problemas de cada
fase segundo seu nível de conhecimento, alterar o layout do ambiente segundo suas
expectativas, entre outras adaptações que promovem motivação.
Referências Bibliográficas
ALMEIDA, M. E. B. (2001) Tecnologia na Escola: Formação de Educadores na Ação.
Programa Salto para o Futuro-série Informática na Educação. Disponível em:
http://www.proinfo.gov.br/biblioteca/publicacoes/default.htm (Última consulta em
março/2003).
ASSIS, J. S. S., CONCI, A. (2005) Construção de Página Web. DVD da Fundação
CECIERJ/Consórcio CEDERJ.
AUSUBEL, D. (1980) Psicologia Educacional. Editora Interamericana, New York.
BACCII++ - Ben A. Calloni Coding for Iconic Interface. Disponível on-line em
http://www.csusa.net/~baccii. Última consulta em agosto/2004.
BAEZA-YATES, R. A. (1995) Teaching Algorithms. SIGACT News 26, 4, 51-59.
BALDWIN, L., KULJIS, J. (2001) Learning Programming Using Program Visualization
Techniques. 34
th
Annual Hawaii International Conference on System Sciences ( HICSS-34)-
Volume 1, p. 1051. Maui, Hawaii.
BURTON, P. J. e BRUHN, R. E. (2003) Teaching Programming in the OOP Era, SIGCSE
Bulletin, 35(2): 111--114.
CARES, P. L. L., DAZZI, R. L. S. (2002) Ambiente para Teste de Mesa utilizando
Fluxograma. Seminário de Computação FESURV/SENAC e Feira de Informática
(SECOMFS’02). Rio Verde, GO, Brasil.
CASTELLS, M., (1999) A era da informação: Economia, sociedade e cultura. Vol 1. A
sociedade rede, Editora. Paz e Terra, São Paulo.
CHAVES DE CASTRO, T., CASTRO JÚNIOR, A., MENEZES, C., BOERES, M. e
RAUBER, M. (2003) Utilizando Programação Funcional em Disciplinas Introdutórias de
Computação, Anais do WEI 2003, Brasil.
CRUZ, A. J., KNOPMAN, J. (2005) Projeto e Desenvolvimento de Algoritmos. DVD da
Fundação CECIERJ/Consórcio CEDERJ.
CUNNINGHAM, D. J., DUFFY, T. M., KNUTH, R. A. (1993) The TextBook of the Future.
In McKnight, C., Dillon, A., and Richardson, J. (eds): HYPERTEXT A Psychological
Perspective. New York: Ellis Horwood.
DALY, C. (1999) RoboProf and an Introductory Computer Programming Course. 4
th
Annual
SIGCSE/SIGCUE Conference Integrating Technology into Computer Science Education
(ITiCSE), P. 155-158. Cracow, Poland.
DELGADO, C., XEXEO, J. A. M., SOUZA, I. F., CAMPOS, M., RAPKIEWICZ, C. E.
(2004) Uma Abordagem Pedagógica para a Iniciação ao Estudo de Algoritmos. XII Workshop
de Educação em Computação (WEI'2004). Salvador, BA, Brasil.
DELGADO, C., XEXEO, J. A., SOUZA, I. F., RAPKIEWICZ, C. E., PEREIRA JR, J. (2005)
Identificando competências associadas ao aprendizado de leitura e construção de algoritmos.
In: XIII Workshop sobre Educação em Computação. São Leopoldo, RS.
96
ESMIN, A. A. A. (1998) PORTUGOL/PLUS: Uma Ferramenta de Apoio ao Ensino de
Lógica de Programação baseado no Portugol. IV Congresso da Rede Iberoamericana de
Informática Educativa (RIBIE’98), Brasília, DF, Brasil.
FADIX – Sistema de Apoio as Técnicas de Programação. Disponível on-line em
http://www.fadix.hpg.ig.com.br/Educacao/1/index_hpg.html. Última consulta em
agosto/2004.
FALKEMBACH, G. A. M., AMORETTI, M. S. M., TAROUCO, L. R., VIERO, F. (2003)
Aprendizagem de Algoritmos: Uso da Estratégia Ascendente de Resolução de Problemas.
Taller Internacional de Software Educativo. Santiago, Chile.
FLORES, A. M. (2002) A Informática na Educação: Uma Perspectiva Pedagógica.
Monografia – Universidade do Sul de Santa Catarina (1996). Disponível em:
http://www.hipernet.ufsc.br/foruns/aprender/docs/monogr.htm (nov/2002).
GIRAFFA, L., MARCZAK, S., ALMEIDA, G. (2003) O ensino de Algoritmos e
Programação mediado por um ambiente na Web. Congresso Nacional da Sociedade
Brasileira de Computação (SBC’2003). Campinas, SP, Brasil.
GOULART, I. B. (1998) Piaget: experiências básicas para utilização pelo professor. 14. ed.
Petrópolis, RJ. Editora Vozes.
GRIES, D. (1974) What Should We Teach in an Introductory Programming Course?. In
Proceed-ings of the fourth SIGCSE technical symposium on Computer science
education, ACM Press, pp. 81-89.
GUIMARÃES, A. M. (2002) Introdução ao Pascal-Logo. Notas de Aula. UFMG, Belo
Horizonte.
HARVEY, B. (1997) Computer Science Logo Style Vol 3: Beyond Programming. MIT Press,
2ª edição.
HENDERSON, P. (1987) Modern Introductory Computer Science. In Proceedings of
the eighteenth SIGCSE technical symposium on Computer science education, ACM
Press, pp. 183-190.
ILA – Interpretador de Linguagem Algorítmica. Disponível on-line em
http://www.exatec.unisinos.br/_professores/gerador.php?professor=crespo&id_menu=434&id
_submenu=189. Última consulta em agosto/2004.
IRONS, D. M. (1982) Cognitive Correlates of Programming Tasks in Novice Programmers.
Conference on Human Factors in Computing Systems. p. 219-222. Gaithersburg, Maryland,
USA.
KAASBØLL, J. (1998) Exploring didactic models for programming. Norsk Informatikk-
konferanse, Høgskolen i Agder.
KAHN, K. (1995) ToonTalk -- Um ambiente de programação animada para crianças.
Disponível on-line em http://home.utad.pt/~leonelm/JVLC-Portugues.htm
. Última consulta
em agosto/2004.
KOLIVER, C., DORNELES, R. V., CASA, M. E. (2004) Das (muitas) dúvidas e (poucas)
certezas do ensino de algoritmos. XII Workshop de Educação em Computação (WEI'2004).
Salvador, BA, Brasil.
97
KOZAK, D.V., EBERSPÄCHER, H. F. (2000) A Non-traditional Approach to Algorithms
and Computer Programming Courses in Engineering Education. In: The International
Conference on Engineering and Computer Education (ICECE’2000). São Paulo, SP, Brasil.
LOPES, J. J. (2004) A Introdução da Informática no Ambiente Escolar. Disponível em:
http://www.clubedoprofessor.com.br/artigos/artigojunio.htm (dez/2004).
MARION, W. (1999) CS1: what should we be teaching?, Annual Joint Conference
Integrating Technology into Computer Science Education ,Working group reports from
ITiCSE on Innovation and technology in computer science education, pp 35-38, Polônia.
MARTINS, J. G. (2002) Aprendizagem Baseada em Problemas aplicada a Ambiente Virtual
de Aprendizagem. Tese de Doutorado em Engenharia de Produção da Universidade Federal
de Santa Catarina, Florianópolis, RS.
MCCRACKEN, M., WILUSZ, T., ALMSTRUM, V., DIAZ, D., GUZDIAL, M., HAGAN,
D., KOLIKANT, Y. B., LAXER, C., THOMAS, L., UTTING, I. (2001) A multi-national,
multi-institutional study of assessment of programming skills of first-year CS students. The
6
th
Annual Conference on Innovation and Technology in Computer Science Education
(ITiCSE). Cunterbury, UK.
MEDEIROS, C. L., DAZZI, R. L. S. (2002) Aprendendo Algoritmos com Auxílio da Web. II
Congresso Brasileiro de Computação (CBCOMP’2002). Itajaí, SC, Brasil.
MENEZES, C., NOBRE I. (2002) Suporte à Cooperação em um Ambiente de Aprendizagem
para Programação (SambA). XIII Simpósio Brasileiro de Informática na Educação (SBIE).
São Leopoldo, RS.
MOREIRA, M. A., MASINI, E. F.S. (2001) Aprendizagem Significativa: a Teoria de David
Ausubel. São Paulo: Centauro.
MORGAN, A. R. (1995) Student Learning and Student's Experiences: Research, Theory and
Preactice. In Fred Lockwood (Ed.) Open and Distance Learning Today. London and New
York: Routledge.
ON COMPUTING CURRICULA IEEE COMPUTER SOCIETY ASSOCIATION FOR
COMPUTTING MACHINERY, T. J. T. F. Computing Curricula (2001) Computer Science.
Tech. rep., IEEE-CS and ACM.
PANE, J. F., MYERS, B. A. (1996) Usability Issues in the Design of Novice Programming
Systems. Carnegie Mellon University, School of Computer Science Technical Report CMU-
CS-96-132, Pittsburgh, PA.
PANE, J. F., RATANAMAHATANA, C. A., MYERS, B.A. (2001) Studying the Language
and Structure in Non-Programmers' Solutions to Programming Problems. International
Journal of Human-Computer Studies, vol. 54, no. 2, pp. 237-264.
PEREGO, C., LISBOA, M. e BERTAGNOLLI S. (2002) A Migração de Pascal para Java:
Problemas e Propostas de Solução, Anais do WIE 2002, Brasil.
PIMENTEL, E. P., FRANÇA, V. F., OMAR, N. (2003) A caminho de um ambiente de
avaliação e acompanhamento contínuo da aprendizagem em Programação de Computadores.
II Workshop de Educação em Computação e Informática do Estado de Minas Gerais
(WEIMIG’2003). Poços de Caldas, MG, Brasil.
98
PINHEIRO, M. C. (2003) Uma Experiência no Ensino de Lógica de Programação para
Cursos de Engenharia Usando o Pascal e o Logo. Workshop de Educação em Computação e
Informática do Estado de Minas Gerais (WEIMIG 2003), PUC Minas. Poço de Caldas, MG,
Brasil.
POLLARD, S., AND FORBES, J. (2003) Hands-on labs without computers. In Proceedings
of the 34th SIGCSE technical symposium on Computer science education, ACM Press, pp.
296–300.
ROCHA, H. V. (1995) Representações computacionais auxiliares ao Entendimento de
conceitos de programação. In Computadores e Conhecimento: Repensando a Educação, cap.
16. Campinas, SP, Brasil.
RODRIGUES, M. C. (2002) Como Ensinar Programação?. Informática -Boletim Informativo
Ano I n° 01, ULBRA. Canoas, RS, Brasil.
SANTIAGO, R., DAZZI, R. L S. (2003) Ferramentas que auxiliam o desenvolvimento da
lógica de programação. XII Seminário de Computação (SEMINCO’2003). Blumenau, SC,
Brasil.
SANTOS, N. S. R. S. (2006) Utilizando Jogos Computacionais no Apoio ao Ensino de
Algoritmos e Programação. Monografia de Desenvolvimento de Software, CEFET Campos,
RJ, abril.
SATRATZEMI, M., DAGDILELIS, V., EVANGELIDIS, G. (2001) A System for Program
Visualization and Problem-Solving Path Assessment of Novice Programmers, Proceedings of
the 6
th
Annual Conference on Innovation and Technology in Computer Science Education
(ITiCSE 2001), ACM SIGCE Bulletin, vol. 33, no. 3, pp. 137-140, Canterbury, UK.
SCHULTZ, M. R. O. (2003) Metodologias para Ensino de Lógica de Programação de
Computadores. Monografia de Especialização (Ciência da Computação). Universidade
Federal de Santa Catarina (UFSC), Florianópolis, SC, Brasil. 69p.
SPOHRER, J., SOLOWAY, E. (1986) Novice Mistakes: Are The Folk Wisdoms Correct?
Commun. ACM, 29, 7, 624–632
STRUCHINER, M., REZENDE, F., RICCIARDI, R. M. V., CARVALHO, M. A. P. (1998)
Elementos Fundamentais para o Desenvolvimento de Ambientes Construtivistas de
Aprendizagem à Distância. In. Revista Tecnologia Educacional v.26 (142) Jul/Ago/Set.
TAKAHASHI, T. (Org.) (2000) Sociedade da Informação no Brasil: LivroVerde. 1. Editora
Ministério da Ciência e Tecnologia. Brasília. 195p.
TOBAR, C. M., ROSA, J. L. G., COELHO, J. M. A., PANNAIN, R. (2001) Uma Arquitetura
de Ambiente Colaborativo para o Aprendizado de Programação. XII Simpósio Brasileiro de
Informática na Educação (SBIE’2001). Vitória, ES, Brasil.
TORI, R., MAINENTE, C. A. (2002) Aprendendo Lógica de Programação via Web. II
Congresso Brasileiro de Computação (CBCOMP’2002). Itajaí, SC, Brasil.
UAL – Unesa Algorithmic Language. Disponível on-line em
http://geocities.yahoo.com.br/ual_language/ual.html (Último acesso em agosto/2004).
VALENTE, J. A. (1999). Informática a Educação no Brasil: Análise e Contextualização
Histórica. In: VALENTE, J. A. O computador na sociedade do conhecimento. Campinas,
UNICAMP/NIED. 156p.
99
VIZCAINO, A., CONTRERAS, J., FAVELA, J., PRIETO, M. (2000) An Adaptive,
Collaborative Environment to Develop Good Habits in Programming. 5th International
Conference on Intelligent Tutoring Systems, p. 262-271. Montreal, Canadá.
WARREN, P. (2004) Learning to Program: Spreadsheets, Scripting and HCI. In Proc. Sixth
Australasian Computing Education Conference (ACE2004), Dunedin, New Zealand.
WERTH, L., BONAR, J., JONI, S., KURTZ, B., SCANLAN, D. (1985) Cognitive processes
in programming (panel session). 16
th
Technical Symposium on Computer Science Education
(SIGCSE), p.373-375. New Orleans, Louisiana, USA.
WINSLOW, L. E. (1996) Programming Pedagogy -- A Psychological Overview. ACM
SIGCSE BULLETIN, Vol. 28, No. 3.
WOODSON, C. (1988) The Environment for Learning to Program. ACM 16th Annual
Computer Science Conference, p. 687-689. Atlanta, Georgia, USA.
ZIEGLER, U., CREWS, T. (1999) An Integrated Program Development Tool for Teaching
and Learning How to Program. 30
th
Technical Symposium on Computer Science Education
(SIGCSE), p. 276-280. New Orleans, Louisiana, USA.
Referências Bibliográficas Complementares
ALMEIDA, E. S., COSTA, E. B., SILVA, K. S., PAES, R. B., ALMEIDA, A. A. M.,
BRAGA, J. D. H. (2002) AMBAP: Um Ambiente de Apoio ao Aprendizado de Programação.
X Workshop de Educação em Computação – WEI 2002. Florianópolis, SC, Brasil.
ANDRE, E., RIST, T., MULLER, J. (1999) Employing AI methods to control the behavior of
animated interface agents. Applied Artificial Intelligence, Volume 13, Numbers 4-5, May
1999, 415-448.
BAGERT, D.J., CALLONI, B.A. (1999) Teaching Programming Concepts Using an Icon-
Based Software Design Tool. IEEE Transactions on Education, Volume 42, ed. 4.
BAYMAN, P., MAYER, R.E. (1983) A Diagnosis of Beginning Programmers'
Misconceptions of BASIC Programming Statements. Communication of the ACM, Vol. 26(9),
p. 677-679.
BEIRA, E. J. C. (2003) Metodologias do Ensino da Programação: vinte anos depois - Anexo,
FEUP. Working Paper Mercados e negócios TSI (dinâmicas e estratégias), Porto, Portugal.
BONAR, J., SOLOWAY, E. (1983) Uncovering Principles of Novice Programming. 10
th
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages. p. 10-13.
Austin, Texas.
BORGES, M. A. F. (2000) Avaliação de uma Metodologia Alternativa para a Aprendizagem
de Programação. VIII Workshop de Educação em Computação – WEI 2000. Curitiba, PR,
Brasil.
BROWN, M. H. (1992) Zeus: A System for Algorithm Animation and Multi-View Editing.
Compaq & DEC Technical Reports: SRC-RR-75.
BYRNE , M. D., CATRAMBONE, R., STASKO, J. T., (1996) Do Algorithm Animations Aid
Learning?. Graphics, Visualization, and Usability Center, Georgia Institute of Technology,
Technical Report GIT-GVU-96-18. Atlanta, GA.
BYRNE , M.D., R. CATRAMBONE, R., STASKO, J.T. (1999) Evaluating Animations as
Student Aids in Learning Computer Algorithms. Computers & Education, Volume 33, Issue 4,
p. 253-278.
CARBONE, A., HURST, J., MITCHELL, I., GUNSTONE, D. (2000) Principles for
Designing Programming Exercises to Minimise Poor Learning Behaviours in Students. In
Proceedings of the Australasian Conference on Computing education, ACM, p. 26-33.
CARVALHEIRO, F. e SETZER, V. (1995) Uma Introdução Geral aos Algoritmos. Anais do
III WEI, IV Congreso Ibero Americano de Educación Superior em Computación, XV
Congresso da SBC 1995, Brasil.
CASTELLS, M., (1999), A Era da Informação: Economia, Sociedade e Cultura. Vol 1. A
Sociedade Rede, Ed. Paz e Terra, São Paulo.
CHAVES DE CASTRO, T. H., CASTRO JÚNIOR, A. N., MENEZES, C. S. (2002)
Representando Padrões em um Ambiente de Apoio à Aprendizagem de Programação. XIII
Simpósio Brasileiro de Informática na Educação – SBIE 2002. São Leopoldo, RS, Brasil.
101
CIDRAL, A. (2000) Aps-Tutor: Un Ambiente Web de Aprendizagem como Soporte às
Atividades Presenciais no Ensino de Análise de Sistemas. V Congresso Iberoamericano de
Informatica Educativa - RIBIE'2000. Viña del Mar, Chile.
COCKBURN, A., CHURCHER, N. (1997) Towards literate tools for novice programmers.
In: Proceedings of the second Australasian conference on Computer science education, ACM
Press, p. 107-116.
DAVY , J., Jenkins, T. (1999) Research-led innovation in teaching and learning
programming. 4
th
Annual SIGCSE/SIGCUE ITiCSE Conference on Innovation and
Technology in Computer Science Education, p.5-8. Cracow, Poland.
DE ANGELI, A., LYNCH, P., JOHNSON, G. (2001) Personifying the e-market: A
framework for social agents. Interact 2001 - Eighth IFIP TC.13 Conference on Human-
Computer Interaction, Tokyo, Japan, July 9-13, 2001.
EISENSTADT, M., PRICE, B. A., DOMINGUE, J. (1993) Software Visualization as a
Pedagogical Tool. Instructional Science, vol. 21, pp. 335-364.
FENICHEL (1970) A Program to Teach Programming. Communications of the ACM,
Volume 13, 3ª ed., p. 141-146. New York, NY, USA.
FERNANDES, J. H. C. (2002) Ensino Introdutório de Computação e Programação: Uma
Abordagem Concreta, Construtivista, Lingüística e Histórica. X Workshop de Educação em
Computação – WEI 2002. Florianópolis, SC, Brasil.
FREIRE, F. M. P. (2000) A diversidade de descrições de um mesmo problema: relações entre
a linguagem Logo e a língua do usuário. Disponível em:
http://www.nied.unicamp.br/oea/temas.html (Último acesso: outubro/2004).
GARCIA, I. C., REZENDE, P. J., CALHEIROS, F. C. (1996) Astral: Um Ambiente para
Ensino de Estruturas de Dados através de Animações de Algoritmos. Anais do V Congresso
Iberoamericano de Educação Superior em Computação (CIESC’96), Cidade do México,
México.
GHAFARIAN, A. (2000) Teaching Design Effectively in the Introductory Programming
Courses. In Proceedings of the Fourteenth Annual Consortium on Small Colleges
Southeastern Conference, The Consortium for Computing in Small Colleges, pp.201-208.
GIANNOTTI, E. (1987) Algorithm Animator: a Tool for Programming Learning. 18
th
Technical Symposium on Computer Science Education (SIGCSE), p. 308-314. St. Louis,
Missouri, USA.
GIRAFFA, L., MARCZAK, S., ALMEIDA, G. (2003) Supporting teaching/learning
activities using an environment based on virtual tools. In: INTERNATIONAL
CONFERENCE ON ARTIFICIAL INTELLIGENCE IN EDUCATION, 11, Sydney,
Australia.
GUERREIRO, P. (1996) A mesma velha questão: como ensinar Programação?. V Congresso
Iberoamericano de Educação Superior em Computação (CIESC’96). Cidade do México,
México.
HAMILTON Jr., J. A. D., MURTAGH, J. L., ZOLLER, R. G. (2000) Programming
Language Impacts on Learning. ACM SIGAda Ada Letters, volume XX , Issue 3. p. 12-19.
102
HENDERSON, P. B. (1986) Anatomy of an Introductory Computer Science Course. In
Proceedings of the Seventeenth SIGCSE Technical Symposium on Computer Science
Education, ACM Press, pp. 257-264.
IRONS, D. M. (1982) Cognitive Correlates of Programming Tasks in Novice Programmers.
Conference on Human Factors in Computing Systems. p. 219-222.
KAHN, K. (1999) A Computer Game to Teach Programming. National Educational
Computing Conference (NECC’1999). Atlantic City, NJ.
KORTRIGHT, L. M. L. (1994) From Specific Problem Instances to Algorithms in the
Introductory Course. Proceedings of the Twenty-fifth SIGCSE Symposium on Computer
Science Education, ACM Press , EUA, pp 71-75.
KOSLOSKY, M. A. N. (1999) Aprendizagem Baseada em Casos: Um Ambiente para Ensino
de Lógica de Programação. Tese de M.Sc., Universidade Federal de Santa Catarina (UFSC).
Florianópolis, SC, Brasil.
KOZAK, D. V., EBERSPÄCHER, H. F. (2000) Uma Abordagem para o Ensino de
Programação nas Engenharias. Anais do XXVIII Congresso Brasileiro de Ensino de
Engenharia (COBENGE’2000). Ouro Preto, MG, Brasil.
LAU, T. A., WELD, D. S. (1999) Programming by Demonstration: an Inductive Learning
Formulation. In Proceedings of the 1999 International Conference on Intelligent User
Interfaces (IUI 99).
LEMOS, M. A., BARROS, L. N., LOPES, R. D. (2003) Um Biblioteca Cognitiva para o
Aprendizado de Programação. XI Workshop de Educação em Computação – WEI 2003.
Campinas, SP, Brasil.
LEVITIN, A. (2000) Design and Analysis of Algorithms Reconsidered. Technical Symposium
on Computer Science Education, Proceedings of theThirty-first SIGCSE Technical
Symposium on Computer Science Education, EUA, pp 16-20.
LIFFICK, B. W., AIKEN, R. (1996) A Novice Programmer’s Support Environment.
SIGCSE/SIGCUE Conference on Integrating Technology into Computer Science Education.
Barcelona, Espanha.
MATTOS, M. M. (1999) Construção de Abstrações em Lógica de Programação. VIII
Seminário de Computação (SEMINCO’1999). Blumenau, SC, Brasil.
MATTOS, M. M. (2002) Learning How to Build Abstractions in Programming Logics
Classes. VI Congreso Iberoamericano de Informática, IV Simpósio Internacional de
Informática Educativa, VII Taller Internacional de Software Educativo (IE2002). Vigo,
Espanha.
MATTOS, M. M., FERNANDES, A., LÓPEZ, O. C. (1999) Sistema Especialista para Apoio
ao Aprendizado de Lógica de Programação. VII Congresso Iberoamericano de Educação
Superior em Computação (CIESC’99). Asunción, Paraguai.
MAYER, R. E. (1981) The Psychology of How Novices Learn Computer Programming. ACM
Computing Surveys (CSUR), v.13 n.1, p.121-141.
MAYER, R. E., DYCK, J. L., VILBERG, W. (1986) Learning to program and learning to
think: what's the connection?. Communications of the ACM, v.29 n.7, p. 605-610.
MCGILL, T., VOLET, S. (1995) An Investigation of the Relationship between Student
Algorithm Quality and Program Quality. SIGCSE Bull. 27, 2, 44-48.
103
MCKEOWN, J. e FARRELL, T. (1999) Why We Need to Develop Succcess in Introductory
Programming Courses. CCSC - Central Plains Conference, Maryville, MO.
MEC (2000) Diretrizes Curriculares de Cursos da Área de Computação e Informática.
Brasília, Secretaria de Educação Superior. 24p.
MILLER, P., PANE, J., METER, G., VORTHMANN, S. (1994) Evolution of Novice
Programming Environments: the Structure Editors of Carnegie Mellon University. Interactive
Learning Environments (ILE), vol. 4, no. 2, pp. 140-158.
MORAES, M.C. (1997) Informática Educativa no Brasil: uma História Vivida, algumas
Lições Aprendidas. Disponível em: http://www.inf.ufsc.br/sbc-
ie/revista/nr1/mariacandida.html (Última consulta em novembro/2003).
MORAN, J. M. (1997). Mudar a Forma de Ensinar e de Aprender com Tecnologias:
Transformar as Aulas em Pesquisa e Comunicação Presencial-Virtual. In: MORAN, J. M.,
MASETTO, M., BEHRENS, M., Novas Tecnologias e Mediação Pedagógica. 7ª ed.
Campinas: Papirus,2003, p.11-65.
MOREIRA, M. A. (1999) Aprendizagem Significativa. Coleção Publicações Acadêmicas do
CESPE/UnB. Série Fórum Permanente de Professores. Brasília: Editora da Universidade de
Brasília.
MUKHERJEA, S., AND STASKO, J. T. (1993) Applying Algorithm Animation Techniques
for Program Tracing, Debugging and Understanding. In Proceedings of the 15
th
International
Conference on Software Engineering, IEEE Computer Society Press, pp. 456-465.
MULHOLLAND, P., EISENSTADT, M. (1998) Using Software to Teach Computer
Programming: Past, Present and Future. In J. Stasko, J. Domingue, M. H. Brown, and B. A.
Price, editors, Software Visualization -- Programming as a Multimedia Experience, p. 399-
408. The MIT Press.
NAKAMURA, A. S. (2001) Um Estudo sobre Requisitos de Ferramentas que Auxiliam o
Processo de Ensino-Aprendizagem em Lógica de Programação. IX Workshop de Educação
em Computação – WEI 2001. Fortaleza, CE, Brasil.
NUNES, M. P., PINTO, I. M. (2003) Uma Abordagem em Amplitude para o Ensino de
Introdução a Computação Baseada na Significação Recorrente de Conceitos. XI Workshop
de Educação em Computação – WEI 2003. Campinas, SP, Brasil.
PANE, J. F., MYERS, B. A. (2000) The Influence of the Psychology of Programming on a
Language Design: Project Status Report. Proceedings of the 12th Annual Meeting of the
Psychology of Programmers Interest Group, A.F. Blackwell and E. Bilotta, Eds. Corigliano
Calabro, Italy: Edizioni Memoria, p. 193-205.
PANITZ, T. (1996) A Definition of Collaborative vs Cooperative Learning. Disponível em:
http://www.city.londonmet.ac.uk/deliberations/collab.learning/panitz2.html. Última consulta
em junho de 2005.
PETRE, M. (1990) Expert programmers and programming languages. In Hoc, J-M., T. R. G.
Green, R. Samur~ay and D. J. Gilmore Psychology of Programming, Academic Press Ltd,
London.
POLYA, G. (1957) How to solve it, Princeton Univ. Press.
104
PORTER, R., CALDER, P. (2003) A Pattern-Based Problem-Solving Process for Novice
Programmers. In Proc. Fifth Australasian Computing Education Conference (ACE2003),
Adelaide, Australia.
PORTER, R., CALDER, P. (2004) Patterns in Learning to Program – An Experiment?. In
Proc. Sixth Australasian Computing Education Conference (ACE2004), Dunedin, New
Zealand.
REATEGUI, E., LORENZATTI, A. (2005) Um Assistente Virtual para Resolução de
Dúvidas e Recomendação de Conteúdo. V Encontro Nacional de Inteligência Artificial (V
ENIA), São Leopoldo, RS, Brasil.
REINFELDS, J. (2002) Programming as an Engineering Discipline. 32
nd
ASEE/IEEE
Frontiers in Education Conference. Boston, MA.
RICKENBERG, R., REEVES, B. (2000) The Effects of Animated Characters on Anxiety,
Task Performance, and Evaluations of User Interfaces. CHI 2000: Conference on Human
Factors in Computing Systems. The Hague, Amsterdam, The Netherlands. 1-6 April, 2000.
ROBERTS, G. H. B., VERBYLA, J. L. M. (2003) An Online Programming Assessment Tool.
5
th
Australasian computing education conference on Computing education (ACE2003).
Adelaide, Austrália.
RODRIGUES Jr., M. C. (2004) Experiências Positivas para o Ensino de Algoritmos. II
Workshop de Educação em Computação e Informática Bahia-Sergipe. Feira de Santana, BA,
Brasil.
ROSSO, A. e DANIELA, M. (2000) Our method to Teach Algorithmic Development, ACM
SIGCSE Bulletin, Volume 32, Issue 2, ACM Press, EUA, pp 49-52.
ROY, P. V., HARIDI, S. (2002) Teaching Programming with the Kernel Language
Approach. Functional and Declarative Programming in Education (FDPE02). Pittsburgh, PA,
USA.
SANTOS, G., DIRENE, A. I., GUEDES, A. L. P. (2003) Autoria e Interpretação Tutorial de
Soluções Alternativas para Promover o Ensino de Programação de Computadores. XIV
Simpósio Brasileiro de Informática na Educação – SBIE 2003. Rio de Janeiro, RJ, Brasil.
SHERTZ, J., WEISER, M. (1981) A Study Of Programming Problem Representation In
Novice And Expert Programmers. 18
th
Annual Computer Personnel Research Conference, p.
302-322. Washington, D.C., USA.
SLEEMAN, D. (1986) The challenges of teaching computer programming. Communications
of the ACM, v.29 n.9, p.840-841.
SOLOWAY, E. (1993) Should we Teach Students to Program?. Communications of the
ACM, v.36 n.10, p.21-24.
SURAWEERA, F. (2001) Getting The Most From An Algorithms Design Course: A Personal
Experience. SIGCSE Bull. 33, 4, 71-74.
VIZCAINO, A., PRIETO, M. (2000) Examining the Effectiveness of New Technology in High
School (number: 6). Disponível on-line em http://citeseer.ist.psu.edu/464747.html
(Visitado
em agosto/2004).
105
WARREN, P. (2001) Teaching Programming using Scripting Languages. Journal of
Computing Sciences in Colleges, Volume 17, Issue 2, p. 205-216.
WATT, D. A. (2000) Programming Languages – Trends in Education. IV Simpósio
Brasileiro de Linguagens de Programação. Recife, PE, Brasil.
ANEXO I - Uma Proposta para a Matriz Curricular
A experiência com a oficina permitiu desenvolver uma proposta de inclusão
do conteúdo de computação na matriz curricular do ensino médio. Com isto, os
resultados esperados pelo GT3 da SBC poderão ser mais realistas, pois os alunos
que freqüentam uma oficina têm a intenção de aprender o que está sendo
apresentado e quando se está trabalhando com uma turma, alguns alunos podem
não demonstrar interesse do mesmo modo que ocorre numa disciplina normal deste
nível escolar.
Para a inclusão do tema de desenvolvimento de algoritmos e programação
na matriz curricular considerou-se pertinente abordar um conteúdo mais amplo do
que a oficina de forma que se pudesse elevar o grau de interdisciplinaridade
intrínseco na programação, favorecendo também o trabalho no colégio. Assim,
buscando mais um elemento apelativo ao aprendizado proposto questionou-se sua
integração à internet que é fonte de informações das mais variadas áreas do
conhecimento. A internet fez parte da oficina, mas para auxiliar o processo de
aprendizagem como fonte de pesquisa e ferramenta para utilização de recursos
como fóruns. A idéia é promover competências para o desenvolvimento de sites
dinâmicos na internet de modo a permitir aos alunos não somente o consumo de
informações já prontas na Internet, mas desenvolver o senso crítico dos mesmos
habilitando-os a tornarem-se autores. Para a construção de sites dinâmico é
necessário aplicar o aprendizado de programação. Neste caso, a programação
migra do básico para um exemplo de trabalho realizado, atualmente, por
profissionais de diferentes áreas, não somente aqueles específicos de informática.
Para tanto, o plano de ação para esta proposta é composto de quatro
etapas. A primeira delas procura aplicar e desenvolver o conteúdo básico visando
estabelecer um nivelamento dos alunos de cada turma, além de ser pré-requisito
para desempenhar as atividades propostas na atividade ao longo do ano. Em certa
medida, é necessário um esforço para a inclusão digital do público-alvo. O conteúdo
proposto é composto por definições e apresentação de vários dispositivos de
hardware e software. Na segunda etapa os alunos irão aprender a utilizar a Internet
107
e a desenvolver suas próprias páginas através da HTML (“HyperText Markup
Language”). Notar que nesta etapa não são necessárias competências relacionadas
a construção de algoritmos e programação em si. Já na terceira o foco é o
aprendizado de algoritmos e programação culminando com o desenvolvimento de
alguns programas em Pascal. Por fim, a última etapa também tem por objetivo a
aplicação de programação para desenvolvimento de sites dinâmicos. No caso, o
foco está no desenvolvimento de conteúdo para a web, através da utilização de uma
linguagem script que, no caso do plano aqui apresentado, é o JavaScript.
Ao final de todo este processo almeja-se que os alunos estejam capacitados
a utilizarem o computador como ferramenta de trabalho para desempenhar suas
atividades cotidianas; para a construção de conteúdos digitais contextualizados à
sua realidade; e para construir soluções estruturadas para problemas.
Etapa 1: Ensino de Informática Básica
Etapa 2: Ensino Básico de Construção de Sites
Etapa 3: Ensino de Algoritmos e Programação
Etapa 4: Ensino de Programação para Web
Etapa 1 5
Etapa 2 3
Etapa 3 2 6
Etapa 4 4 (Extra Classe)
Legenda:
Posvel Ideal
Semanas
Figura A.1: O cronograma da disciplina
O cronograma de atividades (Figura A.1) prevê uma carga horária total ideal
de 73 horas, entretanto, foi estabelecido um total de 63 horas dentro das
possibilidades do ano letivo considerando prazos para possíveis contratempos a
serem ultrapassados ao longo deste período. Além disso, o cronograma também
108
prevê que a última etapa do plano de ação seja uma atividade extra-classe uma vez
que os alunos já detêm o conhecimento de programação adquirido na etapa anterior
possibilitando um aprendizado autodidata.
ANEXO II - Ficha de Avaliação do AVEP
FICHA DE AVALIAÇÃO DO AMBIENTE VIRTUAL PARA ENSINO DE
PROGRAMAÇÃO – AVEP
AVALIADOR: __________________________________________DATA: ____/___/__
Por favor, responda as questões a seguir, conforme indicação da legenda:
LEGENDA
S: Sim P
-
: Parcialmente com MUITAS restrições
P
+
:Parcialmente com POUCAS restrições N: Não
P: Parcialmente NA: Não se Aplica
Bloco A: Objetivos S P
+
P P
-
N NA
A1 O ambiente contribui para o aprendizado de
algoritmos e programação?
A2
O ambiente motiva o estudo de algoritmos e
programação?
A3
O ambiente permite boa interação com outros
alunos e com o tutor?
A4
O ambiente atendeu suas expectativas?
A5
A metodologia utilizada facilita o aprendizado de
programação?
110
Bloco B: Interface - Usabilidade – Alfabetização
Visual – Interatividade
S P
+
P P
-
N NA
B1 As cores são utilizadas com equilíbrio evitando a
poluição visual?
B2
Os textos são bem explicativos?
B3 As representações das funções da interface
(botões, ícones, etc) são fáceis de serem
entendidas?
B4 As representações das funções da interface
(botões, ícones, helps ,etc) são padronizadas?
B5 O ambiente apresenta boa navegabilidade?
B6 As imagens presentes estão coerentes com o
conteúdo ?
111
OBS: Enviar esta ficha respondida para:
Sugestões:
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
Bloco C: Características Pedagógicas S P
+
P P
-
N NA
C1 O nível de dificuldade para a resolução dos
problemas é adequado?
C2
Os problemas da primeira etapa da Fase I são
de fácil interpretação?
C3 Os jogos da segunda etapa da Fase I auxiliam o
estudo de algoritmos e programação?
C4 Os jogos permitem desenvolver a abstração de
problemas?
C5 O fórum da Fase II permitiu concluir que há
necessidade de fazer uma descrição formal da
solução?
C6 O fórum da Fase II permite chegar a conclusão
que um problema possui diversas formas de
solução?
C7 A explicação sobre a divisão de casos (“Se”) é
clara permite fácil identificação de quando utilizá-
la?
C8 A explicação sobre as estruturas de seleção (If,
Case) na Fase III é clara e permite fácil
identificação de quando utilizá-las?
C9 A explicação sobre as estruturas de repetição
(While, For, Repeat) na Fase III é clara e permite
fácil identificação de quando utilizá-las?
Livros Grátis
( http://www.livrosgratis.com.br )
Milhares de Livros para Download:
Baixar livros de Administração
Baixar livros de Agronomia
Baixar livros de Arquitetura
Baixar livros de Artes
Baixar livros de Astronomia
Baixar livros de Biologia Geral
Baixar livros de Ciência da Computação
Baixar livros de Ciência da Informação
Baixar livros de Ciência Política
Baixar livros de Ciências da Saúde
Baixar livros de Comunicação
Baixar livros do Conselho Nacional de Educação - CNE
Baixar livros de Defesa civil
Baixar livros de Direito
Baixar livros de Direitos humanos
Baixar livros de Economia
Baixar livros de Economia Doméstica
Baixar livros de Educação
Baixar livros de Educação - Trânsito
Baixar livros de Educação Física
Baixar livros de Engenharia Aeroespacial
Baixar livros de Farmácia
Baixar livros de Filosofia
Baixar livros de Física
Baixar livros de Geociências
Baixar livros de Geografia
Baixar livros de História
Baixar livros de Línguas
Baixar livros de Literatura
Baixar livros de Literatura de Cordel
Baixar livros de Literatura Infantil
Baixar livros de Matemática
Baixar livros de Medicina
Baixar livros de Medicina Veterinária
Baixar livros de Meio Ambiente
Baixar livros de Meteorologia
Baixar Monografias e TCC
Baixar livros Multidisciplinar
Baixar livros de Música
Baixar livros de Psicologia
Baixar livros de Química
Baixar livros de Saúde Coletiva
Baixar livros de Serviço Social
Baixar livros de Sociologia
Baixar livros de Teologia
Baixar livros de Trabalho
Baixar livros de Turismo