A caminho de um ambiente de avaliação e acompanhamento contínuo da aprendizagem em Programação de Computadores Edson Pinheiro Pimentel1,2, Vilma Fernandes de França1, Nizam Omar1,3 1 Instituto Tecnológico da Aeronáutica (ITA) Pça. Mal. Eduardo Gomes, 50 – 12228-900 – São José dos Campos– SP – Brasil 2 Centro Universitário São Caetano do Sul (IMES) Av. Goiás, 3400 – 09550-051 – São Caetano do Sul– SP – Brasil 3 Universidade Presbiteriana Mackenzie Rua da Consolação, 930 – 01302-907 – São Paulo – SP – Brasil [email protected], [email protected], [email protected] Abstract. This paper presents the functionalities of an initial model to support continuous assessment and accompaniment of the learning in Computer Programming domain. It is intended with this model, to create conditions of a more accurate evaluation of student's mental state, as well as supplying to teachers and coordinators distinguished information of each learner in the related knowledge domain, allowing to all to take decisions to rehabilitate students with located deficiencies. Resumo. Este artigo apresenta as funcionalidades de um modelo inicial de apoio à avaliação e acompanhamento da aprendizagem do estudante no domínio de Programação de Computadores. Pretende-se com este modelo, criar condições de uma avaliação mais exata do estado mental do estudante, bem como fornecer a professores e coordenadores informações particularizadas de cada aprendiz no referido domínio de conhecimento, permitindo a todos tomar decisões para reabilitar estudantes com deficiências localizadas. 1. Introdução Ensino e Aprendizagem são dois aspectos de um fenômeno conhecido por EnsinoAprendizagem. Não basta que o professor ensine. É preciso que o aluno aprenda, ou o processo não estará completo. Segundo David Ausubel, o pai da Aprendizagem Significativa, o fator mais importante influenciando a aprendizagem é aquilo que o aprendiz já sabe [Moreira 2001]. Assim é necessário determinar continuamente o que o aluno já sabe e ensiná-lo de acordo. Para tal, faz-se necessário a definição de um modelo e de ferramentas que possam auxiliar os professores e a instituição de ensino nesta tarefa. Este trabalho apresenta aspectos e funcionalidades de um modelo em fase inicial, aplicado ao domínio de Programação de Computadores em cursos de graduação em Informática. A aprendizagem de programação de computadores é essencial para todas as carreiras ligadas a Informática. Programação é, sem dúvida, a disciplina mais importante para a formação daqueles que terão no desenvolvimento de softwares o produto final do seu trabalho. Uma vez que a aprendizagem de programação ocorre praticamente, durante todo o curso, o baixo índice de assimilação dos estudantes nas disciplinas cujos requisitos exigem o conhecimento de programação tem sido um grande problema enfrentado em muitas instituições. [Rocha 1991] afirma que estamos tendo um fracasso no ensino de programação e [Gomes 2000] fala do insucesso generalizado verificado na aprendizagem de programação. Aprender a programar é um processo difícil e exigente para a maioria dos alunos. No aprendizado de programação, além de conceitos básicos existem conceitos difíceis de serem assimilados, como iteração, recursão, passagem de parâmetros, etc. [Rocha 1991]. Não é raro ouvir que “programação não é para todos”. Esta é uma visão simplista daqueles que não questionam a maneira de ensinar. Porém, para uma razoável parcela da comunidade científica, surgem questionamentos sobre como ensinar programação. São pesquisadores preocupados em entender o processo de aprender a programar, detectando falhas e dificuldades deste aprendizado e sugerindo alternativas, de modo a facilitar o aprendizado de programação. Diversos tipos de ferramentas e ambientes têm sido propostos com o objetivo de facilitar o aprendizado de lógica e linguagens de programação. São mini-linguagens, mundos programáveis, ambientes de desenvolvimento controlados, ferramentas de animação, etc. Dentre outros, podemos destacar AMBAP [AMBAP 2002], ASTRAL [Rezende e Garcia 1995], AUTOMATA SIMULATOR e IC [Jandl e Zuchini 1999], CTutor [Song et al. 1997], BALSA-II [Brown 1988], ZEUS [Brown 1991], SICAS [Gomes 2000], etc. A realidade é que não existem indicações de uma vasta utilização destas ferramentas que acabam tornando-se apenas resultados de produtos de investigação, sem grande divulgação junto à maioria dos professores e alunos [Gomes e Mendes 2000]. Apesar de várias metodologias propostas terem verificado melhores índices de aprendizado no domínio de Programação, não se encontrou na literatura pesquisada, metodologias que possibilitem tratar cada aprendiz de maneira diferenciada. Ou seja, as metodologias geralmente são aplicadas, de maneira uniforme em turmas inteiras. Alunos não são iguais: possuem origens, experiências e habilidades diferentes. Isto justifica, em parte, o fato de alunos de uma mesma classe, submetidos às mesmas condições de ensino, apresentarem resultados distintos [Cardoso e Jandl 1998] e reforça a necessidade do uso de técnicas variadas que permitam ampliar os resultados de ensino. É claro que, apesar de cada um aprender de forma diferente, existem também pontos comuns a certos grupos de alunos: são os estilos de aprendizagem. Não se conhece, no entanto, nenhum processo de aferição da aprendizagem que permita ao coordenador ou à Instituição acompanhar o aprendizado de cada um dos alunos e muito menos medir o seu conhecimento prévio. Este trabalho tem com objetivo propor um modelo de acompanhamento da aprendizagem de programação durante todo o curso, apoiado por um Sistema Tutor Inteligente. Este modelo poderá também ser aplicado em outras disciplinas e áreas de conhecimento, não ficando restrito ao domínio aqui proposto. O artigo está organizado como segue. Na Seção 2 discute-se o sistema de avaliação existente nas disciplinas de Programação de Computadores. Na Seção 3 é apresentado o modelo proposto para avaliação e acompanhamento contínuo da aprendizagem. Na Seção 4 são apresentadas algumas considerações acerca deste trabalho e resultados esperados. 2. Avaliação de Aprendizagem de Programação: O Sistema Atual Aprendizado de programação, principalmente nas disciplinas introdutórias, é um dos mais graves problemas encontrados nos cursos de Informática. Para muitos estudantes, a primeira experiência no aprendizado de programação acaba se tornando uma grande barreira. As dificuldades encontradas podem ser diagnosticadas não somente pelo alto grau de repetência nas disciplinas introdutórias, mas também pelas dificuldades demonstradas pelos estudantes nas disciplinas avançadas que exigem o pré-requisito de programação. Isto faz com que o problema se propague indefinidamente, sem que seja adotada qualquer medida para a reabilitação do aprendiz. Com isto, muitos estudantes completam seus cursos sem as habilidades de programação desejadas tais como raciocínio lógico, resolução de problemas, etc. Em parte, isto é decorrência 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 2001]. É sabido que os critérios de avaliação utilizados pelas instituições não são satisfatórios, uma vez que o fato de um aluno obter média 5.0 numa disciplina de programação, não indica que este aluno sabe 50% de tudo daquilo que foi abordado. Pode ser que ele tenha aprendido muito bem um tópico do curso e quase nada de outros tópicos correlacionados. Imagine por exemplo um aluno que assimilou muito bem os tópicos iniciais como declaração de variáveis, entrada e saída de dados, comandos condicionais, laços de repetição, todos trabalhando com variáveis simples, mas que não consegue aplicar os mesmos tópicos quando é necessário utilizar variáveis estruturadas (indexadas, heterogêneas, etc.). Haja vista que normalmente uma aplicação completa exige estruturas simples e complexas de programação o estudante acabará tendo muitos problemas de acompanhamento nas disciplinas avançadas. Outro problema grave é a falta de comunicação entre os professores das várias disciplinas, sejam elas do mesmo semestre ou de semestres seguintes. Observando-se o plano de desenvolvimento de várias disciplinas de programação, em diferentes instituições, constata-se que os critérios de avaliação não variam muito. Normalmente esta avaliação engloba uma prova e um projeto a cada bimestre ou trimestre e a entrega de listas de exercícios. Talvez as “listas de exercícios” e os “projetos” sejam as ferramentas mais eficazes no aprendizado de programação. Sabe-se que programação é uma arte que se aprende na prática e não apenas por contemplação. É claro que estudar programas prontos, testar, entender o que o programa faz também ajuda na aprendizagem, mas nada substitui a tarefa de escrever o programa a partir de um problema proposto. A quantidade de “programas” escritos durante um curso revela a ênfase de programação que este curso tem [Kurnia 2001]. No entanto, como a maioria dos cursos, principalmente em instituições privadas, são desenvolvidos com turmas grandes (entre 50 e 100 alunos), os professores acabam reduzindo a quantidade de programas a serem entregues pelos alunos, uma vez que os mesmos não têm condições de corrigir tantos trabalhos, com detalhes de comentários, capazes de dar feedback com mais qualidade para o aluno. Seguindo a sistemática de ensino de que "matéria dada é matéria aprendida e portanto matéria cobrada", a prova bimestral (ou trimestral) acaba sendo a principal fonte para o diagnóstico do estado mental do aluno na disciplina. Se no cômputo geral o aluno conseguir atingir a média para aprovação ele vai adiante, caso contrário ele terá que refazer a disciplina, provavelmente simultaneamente com outras disciplinas de programação, uma vez que poucas instituições trabalham com o pré-requisito formal que impede o aluno de cursar uma disciplina mais avançada sem ter sido aprovado numa disciplina básica. Vale ressaltar que não se defende aqui o uso de retenção como solução para o problema, mas não se pode condenar o aluno a levar o problema de aprendizagem indefinidamente. E é fato que isto acaba acontecendo, pois todos os alunos são tratados de maneira uniforme, ou seja, a mesma aula e as mesmas atividades são pensadas e preparadas para quem já sabe muito, alguma coisa ou nada sobre o assunto. É claro que com turmas gigantescas e apenas com os recursos e métodos atuais, mesmo que quisesse, dificilmente o professor conseguiria dar um atendimento personalizado para cada aluno. Desta forma, desconhecer o que o aluno já sabe ou não, acaba sendo uma defesa para o professor que pode assim dar uma aula homogênea. Isto é menos grave em disciplinas introdutórias quando o professor assume que ninguém sabe nada e parte do básico, mas é penoso para o aluno e professor, em disciplinas avançadas, quando se assume que o aluno tem o pré-requisito. Não se pode deixar de pensar em uma solução para o problema simplesmente por achar que a grande quantidade de alunos nas turmas é uma realidade difícil de ser modificada porque implica em mudança de políticas educacionais, diminuição de lucros, aumento de custos, etc. Este projeto concentra-se na idéia de que é extremamente necessário definir um modelo que possibilite fazer um acompanhamento individualizado sobre o estado mental do estudante, em cada item dos cursos de programação, das disciplinas básicas até aquelas consideradas avançadas, para que não se perca tempo com conceitos que o aluno já sabe e para que se possa concentrar esforços nas reais deficiências de cada estudante. Com as ferramentas de avaliação utilizadas no sistema existente, apenas o próprio aluno conseguiria identificar o seu estado mental em cada item, se ele fosse capaz de perceber efetivamente o que ele não sabe. Mas infelizmente os alunos não estão preparados para isto. Certamente, em conjunto com o acompanhamento da aprendizagem proposto por este trabalho, será necessário treinar os alunos na tarefa de aprender a aprender como propõe [Yang 1998] para o aprendizado de uma segunda língua mas que pode ser estendido para o campo da aprendizagem de programação e linguagens de programação. 3. Um Modelo para o Acompanhamento da Aprendizagem Apoiado por um Sistema Tutor Inteligente O ambiente proposto deverá permitir ao professor registrar e acompanhar o estado mental do estudante em cada tópico das disciplinas de programação, durante todo o curso. Desta forma, o ambiente poderá ser uma ferramenta de apoio aos coordenadores de curso na distribuição dos alunos em turmas, fornecendo subsídios, por exemplo, para a formação de turmas de nivelamento, ou mesmo de turmas homogêneas ou mais equilibradas. De posse de estatísticas da turma, em cada item dos pré-requisitos exigidos, o professor poderá adotar estratégias que possibilitem um "tratamento" capaz de recuperar os alunos com deficiência de aprendizagem. Como este é um projeto em fase inicial, apresentamos a seguir algumas atividades que já estão sendo realizadas e outras que estão sendo planejadas para cumprir o objetivo do trabalho. 3.1 Um Modelo Conceitual de Conteúdos Educacionais sobre Programação de Computadores Os currículos dos cursos da área de Informática (Ciência da Computação, Sistemas de Informação, etc) geralmente apresentam duas ou três disciplinas de programação por semestre letivo, e a cada disciplina o professor acaba revendo conceitos básicos ao ensinar uma nova linguagem de programação: declaração de variáveis, blocos, comandos condicionais, comandos de repetição, etc. O objetivo é analisar os currículos dos cursos de graduação em informática e identificar todas as disciplinas que envolvem programação, e através da análise dos conteúdos programáticos, criar uma base capaz de cobrir todos os conceitos, eliminando as redundâncias. A idéia é formar um programador amplo com todos os conceitos bem sedimentados. Num levantamento rápido e inicial, realizado a partir do "Plano Pedagógico para os cursos de Ciência da Computação", segundo as diretrizes curriculares do MEC, foi possível relacionar disciplinas com as seguintes características: - Básicas: disciplinas que não exigem pré-requisitos; - Intermediárias: disciplinas que possuem um ou 2 níveis de pré-requisitos, ou seja, disciplinas que, para serem cursadas, exigem disciplinas base. - Avançadas: disciplinas que exigem três ou mais disciplinas base e/ou intermediárias para o curso. O produto final desta atividade será um modelo conceitual de conteúdos educacionais da área de Programação de Computadores, utilizando ferramentas adequadas para representação de conhecimento como Mapas Conceituais, Mapas de Informação, Mapas de Hierarquias de Aprendizagem, Mapas Tridimensionais [Leite 1999] ou Ontologia [Marietto 2000]. Como trabalho inicial, criou-se uma ontologia da disciplina Introdução à Computação (IC-ITA) ministrada no primeiro semestre do curso de graduação em Ciência da Computação do Instituto Tecnológico de Aeronáutica/ITA, utilizando a ferramenta Protégé-2000 [Protégé-2000 2002] . Um fragmento desta ontologia pode ser visto na Figura 1. Figura 1. Fragmento da Ontologia de Linguagem de Programação criada no Protégé-2000 Ontologias fornecem o conhecimento estruturado e uma infra-estrutura para integrar bases de conhecimentos, independente da implementação e constituem uma ferramenta poderosa para suportar a especificação e a implementação de sistemas computacionais de qualquer complexidade [Guizzardi 2000]. Geralmente o termo é visto como uma descrição de alto nível para descrever conceitos que organizam partes de uma base de conhecimento [Obitko 2001]. Para a Inteligência Artificial, ontologias especificam um vocabulário relativo a um determinado domínio. Este vocabulário define os termos (classes, predicados, entidades, propriedades e funções) e as relações entre estes termos. 3.2 Identificando o Estado Mental do Aprendiz No estudo do processo do ensino-aprendizagem fica evidenciado que é imprescindível considerar o mundo onde o aluno está situado. Este é o ponto de partida para a aprendizagem significativa [Moreira 1999]. Como primeira atividade para determinar o que o aluno já sabe elaborou-se um questionário abordando todos os tópicos do conteúdo da disciplina IC-ITA, baseado na ontologia criada, no qual o aluno deverá registrar o seu grau de confiança em relação a estes conteúdos. Para cada tópico o aprendiz deverá assinalar valores entre zero e cinco. Quanto mais próximo de cinco, maior o grau de confiança e quanto mais próximo de zero, menor o grau de confiança do aluno sobre seus conhecimentos naquele tópico. Com este questionário será possível identificar os alunos que já possuem alguma formação em determinados conteúdos, bem como estabelecer o quanto cada aluno acredita saber. Vale ressaltar que o objetivo deste tipo de questionário é o de medir o grau de confiança do aluno naquilo que ele já sabe, e não avaliar o estudante. Na Figura 2 apresentamos uma parte do questionário. Figura 2. Parte do questionário para levantamento do grau de confiança dos alunos aplicado no ITA O resultado do questionário servirá para modelar o estado mental de cada aprendiz, que será atualizado, no andamento da disciplina, a partir das avaliações e registros do professor (veja item 3.3). É claro que as avaliações deverão ser pensadas em termos da ontologia para que seja possível aferir e registrar o que aprendiz sabe sobre cada tópico. Análise Preliminar das Respostas do Questionário do ITA Neste primeiro momento o questionário foi aplicado para 38 alunos de duas turmas, T1 e T3, de primeiro semestre da disciplina IC-ITA. Como são alunos ingressantes, nada se esperava destes alunos em termos dos conteúdos abordados na disciplina. No entanto, alunos que cursaram segundo grau técnico, que fizeram cursos de informática ou que são autodidatas, efetivamente poderiam apresentar conhecimentos sobre determinados conteúdos. Na Tabela 1, apresentamos um resumo dos resultados das 73 questões, agrupadas em tópicos. Com as médias obtidas nas duas turmas, é possível afirmar que boa parte dos alunos não acredita saber quase nada sobre os conteúdos abordados na disciplina, exceto no primeiro item (conceitos básicos de programação) que obteve respectivamente média 1.75 e 1.33 para as turmas T1 e T3, de um máximo de 5.0. Uma outra leitura pode ser feita pela coluna "Quantidade de Respostas diferentes de zero" é que cerca de 3 a 8 alunos expressaram ter algum conhecimento (entre 1 e 5) sobre alguns tópicos da disciplina. Vale ressaltar que analisando os questionários individuais nota-se que foram sempre os mesmos alunos (de 4 a 6) que responderam valores diferentes de zero para as questões dos tópicos mais avançados. Isto possibilitará ao professor fazer um trabalho diferenciado com estes alunos, que poderão por exemplo atuar como monitores dos colegas dentro da própria turma, ou desenvolverem atividades mais avançadas. Tabela 1. Resultados consolidados do questionário aplicado na disciplina IC-ITA ITEM Quantidade de respostas diferentes de zero Média das respostas (valores entre 0 e 5) T1 T3 T1 T3 Conceitos Básicos de Programação 22 16 1.75 1.33 Algoritmos e Programas em C 8 6 0.56 0.57 Estruturas de Controle 8 4 0.59 0.37 Comandos de Entrada e Saída 6 6 0.47 0.39 Variáveis Estruturadas 4 3 0.30 0.17 Subprogramação 4 5 0.35 0.26 Ponteiros 2 3 0.30 0.17 Noções de Estruturas de Dados 4 3 0.39 0.31 Levantamento de Dados com Alunos do 2º ano do IMES Em paralelo com a aplicação deste questionário em turmas iniciantes (primeiro semestre), um outro levantamento está sendo feito com turmas do segundo ano dos cursos de graduação em Ciência da Computação e Sistemas de Informação do Centro Universitário São Caetano do Sul, na disciplina de Estruturas de Dados (ED-IMES) que é uma disciplina que tem como pré-requisito os conteúdos aprendidos na disciplina correspondente a Introdução à Programação. Desta vez, o objetivo será medir o grau de confiança dos alunos que já passaram por um processo inicial de formação em Programação (uma disciplina de 144h/a, durante um ano). Muitos destes alunos foram reprovados na referida disciplina mas estão cursando a disciplina ED-IMES que não possui pré-requisito formal. Com o resultado deste questionário será possível modelar o estado mental destes aprendizes no referido domínio de conhecimento, e traçar comparativos com os resultados obtidos na disciplina anterior (médias finais). Vale ressaltar que para este grupo o trabalho está começando no meio do caminho, diferentemente do grupo do ITA. Mesmo os alunos tendo passado pela disciplina introdutória, não existem registros do que efetivamente cada aluno sabe ou não sabe, sendo impossível estabelecer um programa de recuperação ou nivelamento para os alunos com deficiências em determinados conteúdos. O questionário no IMES está sendo aplicado em cinco turmas, totalizando cerca de 300 alunos. Os resultados ainda estão em fase de tabulação e análise. Tanto no ITA quanto no IMES, a aplicação do questionário no formato impresso aconteceu em virtude do momento inicial da pesquisa. Mas vislumbra-se que esta atividade seja um componente de um Sistema Tutor Inteligente/STI capaz de apoiar todo o trabalho de acompanhamento da aprendizagem de cada estudante. O registro num STI da ontologia, dos conteúdos, dos exercícios, das avaliações comporá uma base de conhecimentos sobre o domínio de programação de computadores. 3.3 Critérios e Meios para a Atualização do Estado Mental do Aprendiz Para cada conceito a ser aprendido pelo aluno, em cada disciplina (ontologia), será necessário estabelecer um critério capaz de aferir com segurança se o aluno aprendeu ou não aquele conceito, para que assim seja atualizado o seu estado mental no STI. Por exemplo, para certificar o aluno no tópico de entrada de dados na disciplina de “Princípios de Desenvolvimento de Algoritmos” (ou com nome similar) pode se estabelecer um conjunto de problemas, com vários níveis de dificuldade que o aluno deverá resolver individualmente, com ou sem o uso de um computador. O objetivo desta etapa não é dizer qual problema o aluno deve resolver, mas identificar uma classe de problemas a serem resolvidos para certificar o aluno num determinado item de programação. A certificação de um grupo grande de alunos utilizando apenas ferramentas manuais com certeza não será .suficiente. Será necessário fazer uso também de instrumentos automáticos. Há controvérsias sobre a real eficiência dos Sistemas de Avaliação Automáticos de Programação. O fato é que também há muitas falhas nos métodos de correção atual. Normalmente o professor utiliza uma resposta padrão como parâmetro de correção de programas. Sabe-se, no entanto que em programação há muitas maneiras, mais ou menos eficientes, de se chegar a um algoritmo que forneça o resultado desejado. Assim o professor pode considerar errado um programa, que está muito longe da sua resposta padrão, mas que também realiza o que foi pedido no enunciado [Kurnia 2001]. A ausência ou exagero de comentários nos programas, a forma como o aprendiz apresenta o programa (estética, endentação, etc.), os nomes de variáveis utilizados e até mesmo o humor de quem corrige podem afetar a nota final. . Justifica-se, portanto, a utilização de uma ferramenta que permita fazer a avaliação on-line da aprendizagem de programação, não como um critério único, mas como um critério adicional que torne o ato de avaliar mais justo para todas as partes. 3.4 Um Sistema Tutor Inteligente para a Avaliação e Acompanhamento Contínuo da Aprendizagem O acompanhamento contínuo de cada aprendiz, e o tratamento personalizado a cada estudante, principalmente em turmas com um número elevado de alunos, só será possível se for apoiado por sistemas inteligentes , ou seja, auxiliados por computadores. Os processos de aprendizagem inteligentemente auxiliados por computador requerem a implementação de sistemas complexos, dinâmicos e adaptativos. Estes sistemas devem ser capazes de se adequar ao estado mental de cada estudante, num dado instante, a partir de um modelo histórico e do desempenho instantâneo do aprendiz. Atualmente, os Sistemas de Tutoria Inteligente são os que melhor respondem a estas exigências [Leite 1999]. A arquitetura do Sistema Tutor Inteligente que irá apoiar o ambiente de acompanhamento e avaliação contínua de aprendizagem ainda está sendo projetada, mas terá como base cinco módulos a saber : domínio, estudante, especialista, tutor e comunicação. Veja esquema gráfico da arquitetura proposta para o STI na Figura 3. Pretende-se ainda, utilizar a tecnologia de Sistemas Multiagentes. USUÁRIO MÓDULO DE COMUNICAÇÃO MÓDULO DO TUTOR CONTROLE MÓDULO DO DOMÍNIO MÓDULO DO ESTUDANTE MÓDULO DO ESPECIALISTA Figura 3. Proposta de Arquitetura para o STI A seguir, apresentamos a descrição inicial de alguns serviços a serem realizados pelo núcleo do STI em seus módulos principais. Módulo do Domínio: O domínio a ser tutorado pelo STI deverá abranger todos os assuntos de programação, do básico ao avançado, envolvendo diversos paradigmas (programação procedural, programação orientada a objetos, programação concorrente, programação distribuída, programação em lógica, etc.). Estes assuntos estarão dispostos de maneira hierárquica, descrevendo os requisitos. Um outro atributo necessário é indicar em que disciplinas cada item será abordado. É claro que a idéia é minimizar a quantidade de disciplinas em que cada assunto é abordado justamente para evitar a redundância de conteúdos que é um dos problemas existentes nas grades curriculares e ementas atuais. Na Figura 4, os conceitos são representados pelos retângulos com letras e as disciplinas pelos círculos (que podem abranger vários conceitos). A Figura 4 mostra ainda que pode haver intersecção de conceitos em mais de uma disciplina. A ontologia que está sendo definida para o domínio de programação conforme descrito no item 3.1 deste artigo servirá de base para a alimentação deste módulo. A B F E H L C I M D G J K N O Figura 4. Conceitos x Disciplinas Módulo do Estudante: Deverá descrever o “estado mental” do aprendiz, ou seja, armazenar informações referentes ao que o estudante conhece sobre os vários tópicos de programação. O questionário de identificação do grau de confiança do aprendiz descrito no item 3.1 será utilizado como fonte inicial para compor o modelo do estudante. Posteriormente, outros mecanismos poderão ser utilizados nesta etapa. Por exemplo, [Cury 1996] propõe um conjunto de ferramentas de autoria para a modelagem dos estereótipos de aprendizes e se baseiam numa curva representativa do processo de aprendizagem. A atualização do estado mental do aprendiz, no andamento do curso deverá estar atrelada a Sistemas de Avaliação Automática como o proposto em [Kurnia 2001], ou a Avaliação Autêntica através de Portfolio descrita em [Sistêlos et al. 1998] ou mesmo considerar diversas ferramentas para verificar o estado mental atual do aprendiz. Módulo do Especialista: Nos modelos clássicos de STI, o módulo do especialista era o que tratava do domínio do conhecimento. Já no modelo apresentado por [Leite 1999] o módulo dos conteúdos recebeu o nome de Módulo do Domínio enquanto o Módulo de Comunicação recebeu as atribuições de Interface com o Especialista. O que se pretende com o módulo do Especialista nesta proposta é que ele contenha um modelo, considerando-se as habilidades e competências que cada estudante deve atingir para obter o nível de aprendizagem exigido no referido domínio de conhecimento especificado no módulo do domínio. Também serão definidos todos os instrumentos, tecnologias e conceitos necessários ao correto e perfeito aprendizado que leva o estudante ao nível de especialista. O objetivo é que este modelo sirva como parâmetro de comparação com o estado mental atual do aprendiz. Para cada item do módulo do domínio serão especificados níveis hierárquicos de conhecimento. A Figura 5 mostra estes níveis. Na base da pirâmide encontram-se os conhecimentos considerados mínimos para o aprendizado. Em seguida, no nível de conhecimento complementar, o aluno deverá ser capaz de generalizar os conhecimentos adquiridos no nível anterior. Finalmente, no topo da pirâmide o aluno deverá ser capaz de abstrair os diversos conhecimentos adquiridos, aplicando-os em situações problema diferentes. EXTRA COMPLEMENTAR EXIGIDO Figura 5. Níveis de Conhecimento Para garantir que o conhecimento mínimo exigido seja atingido, o módulo do especialista sofrerá um superdimensionamento de 200%. Atingindo 100% o aluno terá, comprovadamente, assimilado o conhecimento mínimo exigido, o que equivaleria nas medidas educacionais atuais, a uma nota 5.0. O aluno que atingir 200% será considerado perito neste conteúdo. Desta forma, ao final do curso, o aluno que estiver próximo dos 200% terá atingido um estado de proficiência em programação, e com isto não terá problemas de acompanhamento em disciplinas avançadas. Vale enfatizar que as medidas educacionais utilizadas no sistema atual (com média 5.0) possibilitam que o aluno seja promovido sem os conhecimentos mínimos, uma vez que há um subdimensionamento no processo de avaliação. Módulo do Tutor: Conterá o plano pedagógico das disciplinas sendo responsável pela decisão sobre como e que atividades pedagógicas serão apresentadas, sempre interagindo com o módulo do estudante [Cury 1996]. O módulo do tutor fará a ligação entre os módulos do estudante, domínio e especialista. O sistema tutor inteligente aqui proposto funcionará como um monitor de laboratório, sempre presente para observar o aprendizado do estudante. Assim, a cada conceito discutido em sala de aula, aplica-se uma prática laboratorial, onde tais conceitos possam ter suas funcionalidades testadas e o estudante seja motivado a aprender mais. A prática laboratorial compõe-se de exercícios individualizados que permitirão uma avaliação de como cada estudante está absorvendo os diversos conceitos relacionados a um determinado conteúdo. Para a escolha destes exercícios pode-se, por exemplo, utilizar medidas cognitivas, como as apresentadas em [Pimentel e Direne 1998], que descrevem a possibilidade de automação na escolha do próximo programa a ser trabalhado com o aprendiz, simulando a experiência do professor. 4. Considerações Finais O modelo proposto para a avaliação e acompanhamento contínuo da aprendizagem tem como objetivo contribuir para um maior rendimento dos estudantes de linguagem de programação, incentivando-os a redescobrirem seus potenciais e conseqüentemente melhorar os seus processos de aprendizagem. O modelo também fornecerá subsídios para coordenadores e professores de disciplinas subseqüentes a respeito do estado mental de cada estudante e, conseqüentemente, de turmas inteiras. Como descrito anteriormente, algumas atividades já estão sendo realizadas manualmente, a fim de se coletar dados, permitindo assim validar o modelo, sem ter que esperar que um Sistema Tutor Inteligente esteja pronto. Posteriormente, à medida que ferramentas de apoio forem construídas, pretendese aplicar a metodologia de maneira integrada, abrangendo disciplinas subseqüentes para permitir validar se o modelo realmente ajuda a melhorar a aprendizagem dos alunos e o respectivo desempenho em disciplinas avançadas. Uma outra possibilidade é validar o modelo com outras disciplinas e áreas de conhecimento. Referências AMBAP (2002). AMBAP - Ambiente de Aprendizado de Programação. http://www.ufal.br/tci/ambap/ e http://www.dcc.ufal.br/projetos/ambap.htm Brown, M. (1988). Exploring Algorithms Using BALSA-II. IEEE Computer. v. 21 no. 5. Brown, M.H. (1991). Zeus: A System for Algorithm Animation and Multi-View Editing, Research Report n. 75, DEC Systems Research Center, Palo Alto, CA. Cardoso, S. M. V. e Jandl, Peter (1998). Estilos de Aprendizagem: Aprender a Aprender. Cury, Davidson (1996). Flama: Ferramentas e Linguagem de Autoria para a Modelagem da Aprendizagem. Tese de Doutorado. São José dos Campos: Instituto Tecnológico da Aeronáutica. Gomes, A. J. (2000). Ambiente de Suporte à Aprendizagem de Conceitos Básicos de Programação. Dissertação de Mestrado. Universidade de Coimbra. Gomes, A. e Mendes, A. (2000). Suporte à Aprendizagem da Programação com o Ambiente SICAS. Actas do V Congresso Ibero-Americano de Informática Educativa, Viña del Mar, Chile. Guizzardi, G. (2000) Uma Abordagem Metodológica de Desenvolvimento para e com Reuso, Baseada em Ontologias Formais de Domínio. Dissertação de Mestrado. Universidade Federal do Espírito Santo. Jandl, Peter Jr. e Zuchini, Márcio H. (1999). IC: Um Interpretador de Linguagem C. IN Projeções - USF, Bragança Paulista, V. 17, pp. 101-112. Kurnia, A., Lim, A e Cheang, B. (2001). Online Judge. Computer & Education, v. 36 pp 299-315. Leite, A. de Sá (1999). Um Modelo de Sistema Educativo Cognitivista Baseado em Tutoria Inteligente Adaptativa Via Aderência Conceitual. Tese de Doutorado. São José dos Campos: Instituto Tecnológico da Aeronáutica. Marietto, M. G. B. (2000). Definição Dinâmica de Estratégias Instrucionais em Sistemas de Tutoria Inteligente: Uma Abordagem Multiagentes na WWW. Tese de Doutorado. São José dos Campos: Instituto Tecnológico da Aeronáutica. Moreira, Marco A. Teorias de Aprendizagem. São Paulo: EPU, 1999. Moreira, Marco A., Masini, Elcie F.S. Aprendizagem Significativa: a Teoria de David Ausubel. São Paulo: Centauro, 2001 Obitko, Marek (2001). Ontologies: Description and Applications. Series of Research Reports – 126/01. Czech Techical University, Prague. Pimentel, A. e Direne, I. (1998). Medidas Cognitivas para o Ensino de Programação de Computadores com Sistemas Tutores Inteligentes. Anais do IX Simpósio Brasileiro de Informática na Educação (SBIE'98), Fortaleza - CE. Protege-2000 (2002). Protégé-2000 home page, http://protege.stanford.edu/index.html. Rezende, P.J. e Garcia, I.C. (1995). Astral: Animação Gráfica de Algoritmos e Estruturas de Dados - Uma Abordagem Construtiva, VIII Simpósio Brasileiro de Computação Gráfica e Processamento de Imagens, 317-318. Rocha, Helena. V. (1991). Representações Computacionais Auxiliares ao Entendimento de Conceitos de Programação. Unicamp. Sistêlos, A. J.C.M., Schiel, U., Dominguez, A. H. (1998). Um Sistema de Apoio ao Método de Avaliação Autêntica: Projeto POETA (Portfolio Eletrônico Temporal e Ativo). Anais do IX Simpósio Brasileiro de Informática na Educação (SBIE'98), Fortaleza - CE. Song, J. S., Hahn, S. H., Tak, K. Y. e Kim, J. H. (1997). An Intelligent Tutoring System for Introductory C Language Course. Computers Education. Vol 28 No. 2. Tobar, Carlos Miguel et al. (2001). Uma Arquitetura de Ambiente Colaborativo para o Aprendizado de Programação. XII Simpósio Brasileiro de Informática na Educação, Vitória - ES. Yang, Nae-Dong (1998). Exploring a New Role for Teachers: Promoting Learner Autonomy. System, v. 26 pp 127-135.