UNIVERDIDADE PRESBITERIANA MACKENZIE MARIANA BRÓLIO LOCATELLI Ambiente de Apoio à Avaliação Continuada Baseado em Aprendizagem Significativa &KUUGTVCÁºQ CRTGUGPVCFC ´ 7PKXGTUKFCFG 2TGUDKVGTKCPC /CEMGP\KG EQOQ TGSWKUKVQ RCTEKCN RCTC C QDVGPÁºQ FQ VÈVWNQ FG /GUVTG GO 'PIGPJCTKC 'NÃVTKEC PC ¶TGC FG 'PIGPJCTKCFG%QORWVCÁºQ Orientador: Dr. Nizam Omar São Paulo 2007 UNIVERDIDADE PRESBITERIANA MACKENZIE MARIANA BRÓLIO LOCATELLI Ambiente de Apoio à Avaliação Continuada Baseado em Aprendizagem Significativa Orientador: Dr. Nizam Omar São Paulo 2007 Ao meu pai. Agradecimentos 1. Agradeço inicialmente ao Professor Dr. Nizam Omar pela compreensão, apoio, confiança e paciência. 2. A minha mãe pelo incentivo que me deu. 3. À minha irmã, sempre ao meu lado, em todos os momentos. 4. Ao Professor Edson pelos valiosos conselhos e ensinamentos. 5. A todos que direta ou indiretamente contribuíram com este trabalho e compartilharam seus conhecimentos. 4GUWOQ A democratização da informação transforma uma sala de aula em um ambiente onde é impossível ao professor estabelecer o domínio de conhecimentos de cada aprendiz e com isso individualize o ensino. A heterogeneidade do nível do conhecimento dos alunos está presente e não é mais uma condição das turmas iniciais dos cursos de informática, mas uma condição geral. A base da formação das habilidades de um indivíduo é feita através de conceitos adquiridos e competências assimiladas, portanto um aluno pode saber muito, pouco ou nada sobre um determinado conceito em cada etapa do processo de ensino aprendizagem. Este trabalho apresenta um ambiente modelado sobre as relações entre os conceitos a serem aprendidos, dispostos na forma de ontologias, com o objetivo de determinar o conjunto do conhecimento já adquirido por um aluno em um determinado período de tempo, o nível de aquisição de conhecimento (NAC) do aprendiz, sob o método de avaliação contínua da aprendizagem. O ambiente foi construído sobre a ontologia do Curso de Ciência da Computação da Universidade Presbiteriana Mackenzie, desenvolvida neste trabalho. Palavras-chave: Avaliação Continuada, Aprendizagem Significativa, Ontologia, Mapa Conceitual, Agrupamento, Ciência da Computação. #DUVTCEV The democratization of information transform a classroom in an environment where it’s impossible for a teacher to establish each apprentice’s domain of knowledge and to individualize the teaching learning process. The heterogeneity of the level of student’s knowledge acquired level, is present and isn’t anymore a condition of the initial classrooms of computer science’s courses but a general condition. The background of individual’s skills is based on the concepts acquired and assimilated, then a student may knows a lot, a little or nothing about some concept in each step of the teach-learning process. This work presents an environment modeled by the relations among concepts to be learned based on ontology and concept maps, with the objective of determinate student’s knowledge acquired in a distinct period of time, the knowledge’s acquisition level (NAC) of a student, using the methodology of continued evaluation of learning. The environment was built based on the ontology of the Computer Science undergraduate Course of the Universidade Presbiteriana Mackenzie, developed in the present work. Key-words: Continued Evaluation, Significant Learning, Ontology, Conceptual Maps, and Grouping, Computer Science. .KUVCFG(KIWTCU Figura 1.1 - Níveis de conhecimento que um aluno pode adquirir durante um curso............ 3 Figura 2.1 - Modelo de Hierarquia de Conceitos - Teoria da Aprendizagem Significativa de Ausubel (LEITE, 1999, modificada). ................................................................................... 12 Figura 2.2 - Exemplo de aprendizagem significativa em um curso de Ciência da Computação .......................................................................................................................... 13 Figura 3.1 - Atividade do processo de análise de domínio e formação da ontologia........... 19 Figura 3.2 - Mapa Conceitual - If...else ................................................................................ 21 Figura 3.3 - Arquitetura Geral do ambiente computacional................................................. 22 Figura 4.1 - Exemplos de Conceitos..................................................................................... 26 Figura 4.2 - Relação entre Disciplinas e Conceitos.............................................................. 26 Figura 4.3 - Dependências entre Conceitos .......................................................................... 26 Figura 4.4 - Instâncias Normalizadas em uma Ontologia .................................................... 27 Figura 4.5 - Parte da hierarquia da ontologia ....................................................................... 28 Figura 4.6 – Cadastro de classes no Protegé ........................................................................ 29 Figura 4.7 - Diagrama de Classes da Ontologia ................................................................... 29 Figura 4.8 – Rotina de migração dos dados do Banco Protegé para Banco de Dados Relacional PostreSQL .......................................................................................................... 32 Figura 4.9 - Instância da classe conceito no Protegé ........................................................... 32 Figura 5.1 - Página inicial do ACAvA ................................................................................. 35 Figura 5.2 – Formas de Atualização do NAC ...................................................................... 36 Figura 5.3 - ACAvA: Atualização do NAC ......................................................................... 37 Figura 5.4 – Arquitetura geral do ambiente de computação e seus componentes................ 39 Figura 5.5 - Visão Geral da Arquitetura do Sistema ............................................................ 41 Figura 5.6 - Entidades e relacionamentos do banco de dados utilizado no aplicativo ......... 43 Figura 5.7 - Diagrama entidade-relacionamento para conceitos (PEZZA, 2004, modificada) .............................................................................................................................................. 44 Figura 5.8 - Diagrama de casos de uso................................................................................. 45 Figura 5.9 - Casos de Uso do Ator Professor ....................................................................... 46 Figura 5.10 - ACAvA - Funcionalidade de cadastramento de exercícios ............................ 48 Figura 5.11 - Casos de Uso do Ator Administrador ............................................................. 49 Figura 5.12 - Casos de Uso do Ator Aluno .......................................................................... 49 Figura 5.13 - Diagrama de classes do Sistema ..................................................................... 51 Figura 5.14 - Classe Screen .................................................................................................. 61 Figura B.1 - Cadastrar Disciplinas ....................................................................................... 75 Figura B.2 - Cadastrar Conceitos ......................................................................................... 76 Figura B.3 - Cadastrar Aluno ............................................................................................... 77 Figura B.4 - Atualizar NAC ................................................................................................. 78 Figura B.5 - Cadastrar Curso................................................................................................ 79 Figura B.6 - Login ................................................................................................................ 79 .KUVCFG6CDGNCU Tabela 2.1 - Resumo dos paradigmas quanto aos tipos de abordagem da aprendizagem (PIMENTEL, 2006).............................................................................................................. 15 Tabela 4.1 - Dicionário de Termos para representação de conteúdos educacionais ............ 25 Tabela 4.2 - Componentes da Ontologia .............................................................................. 31 Tabela 5.1 - Atualização do NAC ........................................................................................ 38 Tabela 5.2 - Atributos e Métodos da classe Conceito .......................................................... 52 Tabela 5.3 - Atributos e Métodos da Classe ConceitoDependencia..................................... 52 Tabela 5.4 - Atributos e Métodos da classe ConceitoDisciplina.......................................... 54 Tabela 5.5 - Atributos e Métodos da classe ConceitoExercicio ........................................... 54 Tabela 5.6 - Atributos e Métodos da classe AlunoConceito ................................................ 55 Tabela 5.7 - Atributos e Métodos da classe Disciplina ........................................................ 56 Tabela 5.8 - Atributos e Métodos da classe CursoDisciplina............................................... 57 Tabela 5.9 - Atributos e Métodos da classe Curso ............................................................... 57 Tabela 5.10 - Atributos e Métodos da classe AlunoCurso ................................................... 58 Tabela 5.11 - Atributos e Métodos da classe Aluno............................................................. 59 Tabela 5.12 - Atributos e Métodos da classe Usuario .......................................................... 59 Tabela 5.13 - Atributos da classe Exercicio ......................................................................... 60 Tabela 5.14 - Atributos da classe Controller ........................................................................ 61 Tabela A.1 - Especificação de Caso de Uso: Cadastrar Conceito ........................................ 70 Tabela A.2 - Especificação de Caso de Uso: Cadastrar Disciplina ...................................... 71 Tabela A.3 - Especificação de Caso de Uso: Cadastrar Curso............................................. 71 Tabela A.4 - Especificação de Caso de Uso: Cadastrar Alunos........................................... 72 Tabela A.5 - Especificacao de Caso de Uso: Login ............................................................. 72 Tabela A.6 - Especificação de Caso de Uso: Realizar Exercício ......................................... 73 Tabela A.7 - Especificação de Caso de Uso: Atualizar NAC .............................................. 74 5WO¶TKQ 1 2 3 4 INTRODUÇÃO....................................................................................................................................... 1 1.1 CONTEXTO DE PESQUISA .................................................................................................................. 2 1.2 O PROBLEMA ................................................................................................................................... 2 1.3 A PROPOSTA .................................................................................................................................... 5 1.4 PERGUNTAS DE PESQUISA ................................................................................................................ 6 1.5 OBJETIVOS ....................................................................................................................................... 6 1.6 RESULTADOS ALCANÇADOS ............................................................................................................ 7 1.7 ORGANIZAÇÃO DO TRABALHO ......................................................................................................... 8 APRENDIZAGEM SIGNIFICATIVA E AVALIAÇÃO CONTINUADA........................................ 9 2.1 APRENDIZAGEM SIGNIFICATIVA....................................................................................................... 9 2.2 AVALIAÇÃO CONTINUADA DA APRENDIZAGEM ............................................................................. 14 MODELO CONCEITUAL DO AMBIENTE DE AVALIAÇÃO CONTINUADA ........................ 17 3.1 ONTOLOGIAS .................................................................................................................................. 17 3.2 MAPAS CONCEITUAIS..................................................................................................................... 20 3.3 AMBIENTES COMPUTACIONAIS DE APRENDIZAGEM E SUA ARQUITETURA LÓGICA ......................... 21 MODELAGEM ONTOLÓGICA DE UM CURSO DE GRADUAÇÃO E SUA INSTANCIAÇÃO EM CIÊNCIA DA COMPUTAÇÃO ............................................................................................................ 24 5 4.1 MODELAGEM ONTOLÓGICA PARA UM CURSO DE GRADUAÇÃO....................................................... 24 4.2 CONSTRUÇÃO DE INSTÂNCIAS ........................................................................................................ 31 ANÁLISE E CONSTRUÇÃO DO SISTEMA DA AVALIAÇÃO CONTINUADA ....................... 34 5.1 NÍVEL DE AQUISIÇÃO DO CONHECIMENTO ..................................................................................... 35 5.2 ARQUITETURA DO ACAVA............................................................................................................ 39 5.3 TECNOLOGIAS UTILIZADAS ............................................................................................................ 40 5.4 MODELO CONCEITUAL DE DADOS ................................................................................................. 42 5.5 MODELAGEM UML........................................................................................................................ 44 5.5.1. Diagrama de Caso de Uso........................................................................................................ 44 5.5.2. Diagrama de Classes................................................................................................................ 50 6 CONCLUSÕES FINAIS ...................................................................................................................... 63 6.1 TRABALHOS FUTUROS ................................................................................................................... 64 REFERÊNCIAS ............................................................................................................................................. 65 APÊNDICE A – ESPECIFICAÇÕES DE CASO DE USO ........................................................................ 70 APÊNDICE B – DIAGRAMA UML DE SEQÜÊNCIA ............................................................................. 75 ANEXO I – GRADE CURRICULAR UTILIZADA ................................................................................... 80 1 1 Introdução A aprendizagem é a finalidade de todas as formas de ensino. A avaliação é um elemento essencial para se conhecer o percurso que os aprendizes fazem ao longo da sua aprendizagem, de forma sistemática e contínua. É considerada como a parte central do processo educacional (CUCCHIARELLI, PANTI e VALLENTI, 2000). Entretanto, nem sempre o resultado da aquisição de conhecimento, obtido através da avaliação em um curso é satisfatório. Determinadas carreiras, como as relacionadas com informática, têm ementas com muito conteúdo e o número de alunos nas salas de aulas é grande demais para um acompanhamento individualizado do professor. A avaliação da aprendizagem baseada na Web tem se mostrado eficiente e importante como ferramenta de auxílio ao facilitador. Isto se deve a sua versatilidade, pois possibilita a criação e aplicação de vários tipos de avaliações de aprendizagem e oferece rapidez nas correções e divulgação dos resultados das avaliações (TRENTIN, 1999). Desta forma, ambientes computacionais que gerenciem conteúdos e sua capacidade de assimilação por parte dos alunos, mostram-se como ferramentas úteis ao professor para auxiliar no processo de avaliação e complementar a metodologia de ensino. Este capítulo está organizado em 7 seções. A Seção 1.1 apresenta o contexto da pesquisa, enfatizando os pontos relevantes que motivaram o desenvolvimento desta dissertação. A Seção 1.2 descreve o problema a ser resolvido neste trabalho. A Seção 1.3 propõe uma solução para o problema apresentado. Na Seção 1.4 listam-se as perguntas de pesquisa que este trabalho se propõe em responder. A Seção 1.5 apresenta os objetivos do trabalho. A Seção 1.6 lista os resultados alcançados por este trabalho. Na Seção 1.7, descrevem-se brevemente o conteúdo de cada um dos demais capítulos da dissertação. 2 1.1 Contexto de Pesquisa Na concepção pedagógica tradicional, o professor é colocado como figura central e com a responsabilidade de direcionar o aprendiz ao aprendizado (MARIETTO, 2000). E, para que os aprendizes sejam capazes de responder aos desafios do novo cenário mundial, que exige cada vez mais das pessoas uma melhor formação educacional, é preciso que professores e educadores, além de cumprir a tarefa usual de transmitir conhecimentos, sejam capazes de ensinar aos aprendizes como aprender, para que possam estar preparados para toda uma vida de aprendizagem e avaliação (GUERRA, 2000). Neste cenário, com a difusão da Internet e suas tecnologias na área de comunicação, nos últimos anos, tem-se hoje a Web como uma nova alternativa para a área educacional promover a aprendizagem e avaliação através dos recursos por ela disponibilizados (CUNHA, 2002). A maioria dos softwares utilizados na área educacional são de apoio instrucional para a aprendizagem e avaliação de determinados conteúdos, perpetuando uma perspectiva de aprendizagem tradicional onde os aprendizes são receptores de uma nova informação passada pelo professor. Além disso, a aprendizagem não é contextualizada no meio social dos aprendizes e também não são aproveitados os seus conhecimentos prévios (SOUZA, 1999; KEMERY, 2000). Isto posto, o contexto desta pesquisa está na área educacional, que atualmente vem sendo apoiada por tecnologias que auxiliam tanto professores, quanto alunos. 1.2 O Problema Em um grupo de alunos, a heterogeneidade está presente. Em um mesmo ambiente de ensino, alunos sabem muito, pouco ou nada sobre um determinado assunto. Ao início de um curso, devido à grande disponibilidade da informação em meios de comunicação como a internet, não se pode afirmar que todos os alunos possuem o mesmo conhecimento, ou nenhum conhecimento, verifica-se, portanto, a heterogeneidade de conhecimento dos alunos e, cabe ao professor o desafio de gerenciar o conhecimento de seus alunos. O crescimento vertiginoso do volume de informações, disponíveis de maneira instantânea e sem fronteiras graças aos avanços e disseminação das Tecnologias da Informação, 3 tornaram, de certo modo, impossível determinar o nível de conhecimento de uma pessoa (PIMENTEL, 2006). Numa sociedade tão massificante quanto a nossa, reveste-se de muita importância uma proposição de aprendizagem que tenha como ponto de partida aquilo que o aluno já sabe. Tomando como base o conhecimento de um aluno, pode-se concluir de acordo com a Figura 1.1 que um aluno além de possuir o conhecimento básico, pode adquirir conhecimentos complementares e extras. Neste âmbito encontram-se duas situações: uma em que não é raro constatar que o professor adota o conhecimento do aprendiz que sabe menos no grupo e o toma como parâmetro para seu ensino, assim, alunos que já possuem certas habilidades são obrigados a rever conceitos que já sabem e não evoluem em novos conceitos nem habilidades, a outra situação é o outro extremo que também pode ser encontrado, o professor adotar o conhecimento de quem sabe mais em uma sala de aula, prejudicando os alunos que não tem conhecimento em determinados conceitos, baseando-se nos resultados e feedback dos melhores alunos, o que fatalmente leva a uma quantidade significativa de alunos à reprovação ou pouco aproveitamento da disciplina. Segundo o modelo do estudante definido por Wegner (1986), o conhecimento que o aluno adquiriu ou já possuiu em um determinado instante, deve ser atualizado durante as interações com o ambiente. Conhecimento Extra Conhecimento Complementar Conhecimento Básico Figura 1.1 - Níveis de conhecimento que um aluno pode adquirir durante um curso 4 Alguns fatores podem influir no processo de ensino e aprendizagem e devem ser considerados, são eles: o alto nível de heterogeneidade existente entre os alunos de uma turma; falha na aderência entre as ementas, programas e realização das disciplinas de um mesmo curso com tópicos desnecessariamente repetidos e; a falta de informação sobre o estado cognitivo do aluno, onde as notas das avaliações nos dão uma idéia do que o aluno aprendeu, mas é uma idéia genérica, que pode em alguns casos não representar o verdadeiro estado cognitivo do aluno (PEZZA, 2004). Esses fatores serviram como motivação para esta pesquisa e métodos descritos nos capítulos a seguir foram desenvolvidos com o intuito de amenizar os problemas causados por estes fatores. O comportamento padrão atualmente observado em alguns alunos como meros receptores de informações, infelizmente, torna-se o alicerce da aprendizagem para toda a vida acadêmica destes, tendo como reflexo seu ingresso no ensino superior com pouco, ou nenhum, interesse em quebrar este paradigma. Cabe à Universidade implantar missões e políticas comprometidas com o desenvolvimento do corpo discente e docente e que os motivem para a realização dessas mudanças, pois não se pode esquecer que parte de sua missão precícua é o estímulo à pesquisa e à investigação. Portanto, esta conduta deve ser perseguida por todos os profissionais cuja responsabilidade é ensinar (SILVA, 2004). E, para auxiliar este desenvolvimento, ambientes computacionais mostram-se uma alternativa capaz de gerenciar grandes quantidades de conteúdos e alunos, sistemas informatizados beneficiam professores e alunos. Sem um sistema informatizado que apóie o professor mostrando o nível de aprendizado de um aluno em relação a um conceito, o ensino fica estagnado frente às novas evoluções que hoje surgem em diversas áreas. Segundo Pimentel e Omar (2006), o modelo de avaliação predominante não fornece subsídios para apoiar o reconhecimento de lacunas que atrapalham a aprendizagem. Além disso, a sistemática de avaliação ainda é predominantemente considerada uma atividade final do processo. Somando-se a estes problemas descritos, no aprendizado atual de um Curso de Ciência da Computação, foco do trabalho, encontram-se agravantes. As dificuldades encontradas neste curso podem ser diagnosticadas não somente pelo alto grau de repetência, mas também pelas dificuldades demonstradas pelos alunos nas disciplinas avançadas que exigem pré-requisitos. Além de conceitos básicos ensinados, existem 5 conceitos considerados difíceis de serem assimilados como interação, recursão, passagem de parâmetros, etc (FRANÇA, 2004). É importante que o professor verifique que o aluno aprendeu conceitos gerais e qual seu nível de assimilação dos conceitos mais complicados para constatar que seu método de ensino é eficaz. Outro fator diferencial desse curso, são as repetições de conceitos que ocorrem durante o curso, como declaração de variáveis, loopings, funções, etc. que em várias disciplinas são abordados, sem uma otimização de conceitos feita entre disciplinas. 1.3 A Proposta Segundo David Ausubel (1968), pai da aprendizagem significativa, o fator mais importante influenciando a aprendizagem é aquilo que o aprendiz já sabe (PIMENTEL, FRANÇA e OMAR, 2003). A proposta é o desenvolvimento de um sistema que acompanhe o nível de aquisição de conhecimento do aluno para conceitos pré-estabelecidos dentro de um domínio, durante um determinado período de tempo. Para que o conhecimento de cada aluno possa ser associado a diversos conceitos, foi desenvolvida uma ontologia, cujos elementos são representados por instâncias de conceitos dentro de uma organização curricular. Segundo Pimentel e Omar (2006), a coleta de um conjunto detalhado de informações sobre o estado cognitivo do aluno pode auxiliar, durante, no final do processo e a tempo de tomar medidas de correção, caso o professor necessite tomar decisões do tipo “aprovar ou reprovar” o aluno. Este trabalho teve base nos trabalhos de França(2004), Pimentel (2006) e deu continuidade ao desenvolvido na Dissertação de Mestrado de Pezza (2004), que apresentou a proposta de um sistema de gestão do nível de aquisição de conhecimento dos alunos e introduziu uma modelagem ontológica do curso de Ciência da Computação baseado no curso de graduação da Universidade Presbiteriana Mackenzie. Com base no referido trabalho, uma aplicação web foi implementada e a ontologia foi instanciada, tendo como foco principal a avaliação continuada da aprendizagem do mesmo curso de graduação seguindo os princípios da aprendizagem significativa. O modelo ontológico de Pezza (2004), por se tratar de um modelo genérico, pode ser utilizado na representação de outros cursos com poucas modificações. A referida 6 modelagem foi complementada neste trabalho e todas as instâncias para essa nova modelagem, foram cadastradas com base nas disciplinas dos quatro primeiros semestres da ementa nova (referente ao ano de 2006) e nas disciplinas dos quatro últimos semestres (referentes a anos anteriores a 2006) do referido curso, procurando dar ênfase às disciplinas específicas da área de computação. Através da ontologia proposta e instanciada, será possível obter informações sobre quais tópicos presentes no programa disciplinar foram efetivamente ensinados e quais foram deixados de lado ou até mesmo ensinados, mas não assimilados pelos aprendizes. Neste contexto, foi realizado o desenvolvimento de um sistema, denominado de Ambiente Computacional de Avaliação da Aprendizagem (ACAvA), que permite acompanhar a avaliação do nível de aquisição de conhecimento do aluno de um determinado curso e através desse resultado proporcionar feedback a alunos, professores e coordenadores, caracterizando assim a principal finalidade da Avaliação Continuada, o monitoramento do progresso da aprendizagem, mais especificamente à medida do seu Nível de Aquisição de Conhecimento (NAC). 1.4 Perguntas de Pesquisa Foi através da busca das respostas para as seguintes perguntas que presente pesquisa foi desenvolvida: 1. Como se pode avaliar se a aprendizagem pretendida foi alcançada pelos aprendizes (CUNHA, 2005); 2. Quais os meios necessários para prover auxilio aos coordenadores e professores para uma melhor educação continuada dentro de um curso de Ciência da Computação? 3. Qual a possibilidade do professor conhecer o estado de conhecimento dos estudantes? 1.5 Objetivos 7 O principal objetivo deste trabalho é o desenvolvimento de um ambiente de apoio à avaliação continuada, através do desenvolvimento de um aplicativo que permitirá coordenadores e professores acompanharem a evolução do aprendizado em uma turma e disponibilizar ferramentas de estruturação de conceitos para a remodelagem destes em suas disciplinas com o uso de mapas conceituais (NOVAK, 1998). Também foi objetivo dessa dissertação de mestrado, buscar responder às perguntas feitas na seção anterior. Da mesma forma que Pimentel e Omar (2006), a pesquisa pressupõe que o mapeamento dos conhecimentos prévios e um processo contínuo de avaliações são fundamentais para melhorar a aprendizagem, ou seja, a abordagem da aprendizagem significativa de Ausubel (1968). Os seguintes objetivos específicos deste trabalho foram alicerces para o desenvolvimento do sistema: • Estudo teórico da aprendizagem significativa de Ausubel (1968), e quais benefícios ela pode trazer para o processo de ensino; • Modelagem ontológica de conceitos de aprendizagem, utilizando como o modelo o Curso Superior de Bacharelado em Ciência da Computação, da Universidade Presbiteriana Mackenzie, para que o banco de dados formado seja referencia a professores e coordenadores que desejam manipular conceitos dentro do curso e; • Identificação do histórico de aprendizagem de um aluno através da avaliação continuada. 1.6 Resultados Alcançados A importância e relevância desta pesquisa para a comunidade científica resultou na publicação de trabalhos em congressos e workshops nacionais e internacionais. Estes trabalhos estão relacionados a seguir: 1. Modelagem de um Ambiente de Apoio à Avaliação Continuada Baseado em Aprendizagem Significativa.1 1 VIII Congresso Iberoamericano de Informática Educativa (RIBIE 2006). Novembro-2006. 8 2. Modelagem de um Ambiente de Apoio ao Nível de Aquisição de Conhecimento Construído sob Ontologia. 2 3. Modelagem de um Ambiente de Apoio à Avaliação Continuada Construído sob Ontologia. 3 4. Modelagem de um Ambiente de Nível de Aquisição do Conhecimento Baseado em Aprendizagem Significativa. 4 1.7 Organização do Trabalho Para melhor compreensão das teorias que embasam este trabalho descrevem-se no Capítulo 2 os principais conceitos da Aprendizagem Significativa, bem como sua aplicação em um Curso de Ciência da Computação. Em seguida são expostas as características da Avaliação Continuada. No Capítulo 3 discute-se acerca do Modelo Conceitual utilizado no ambiente desenvolvido, cujos componentes são: ontologia, mapas conceituais e ambientes computacionais de aprendizagem. O Capítulo 4 apresenta a descrição da modelagem ontológica, as considerações utilizadas durante o desenvolvimento, seu diagrama de classes e sua instanciação. O Capítulo 5 aborda a análise e construção do sistema de avaliação continuada, o ACAvA. O Capítulo 6 descreve os principais resultados obtidos neste trabalho e trabalhos futuros a serem desenvolvidos. Por fim, são apresentados no Apêndice A o detalhamento da especificação de caso de uso no sistema desenvolvido. No Apêndice B, os diagramas de seqüência e, no Anexo I, a ementa do Curso de Ciência da Computação da Universidade Presbiteriana Mackenzie, utilizada como modelo para a instanciação da ontologia. 2 XVII Simpósio Brasileiro de Informática na Educação (SBIE 2006). Novembro-2006. XI Taller Internacional de Software Educativo (TISE 2006). Dezembro-2006. 4 V Workshop em Educação e Informática de Minas Gerais (WEIMIG 2006). Novembro-2006. 3 9 2 Aprendizagem Significativa e Avaliação Continuada As diversas escolas do pensamento possuem definições não-compartilhadas na tentativa de conceituar o que é aprendizagem. Alguns exemplos do que tem sido considerado como definição de aprendizagem incluem condicionamento, aquisição de informação, mudança comportamental estável, uso do conhecimento na resolução de problemas, resignificação conceitual, construção de novas estruturas cognitivas e revisão de modelos mentais (KOMOSINSK, LACERDA e FALQUETO, 2000). Avaliação é o processo de aferição da aprendizagem. Sua importância é fundamental quando existe comprometimento em verificação dos resultados. Neste trabalho, o foco da aprendizagem está na capacidade de armazenamento das informações e as relações que estas informações têm entre elas. E a avaliação é utilizada para descobrir níveis de aquisição de conhecimento. Este capítulo apresenta uma forma alternativa para o processo de aprendizagem, a teoria da aprendizagem significativa de Ausubel. Esta teoria e sua utilização em um curso de Ciência da Computação são apresentadas na Seção 2.1. A Seção 2.2 descreve a avaliação continuada da aprendizagem e seus tipos de abordagem. 2.1 Aprendizagem Significativa Alunos não são iguais: possuem origens, experiências e habilidades diferentes (PIMENTEL, FRANÇA e OMAR, 2003), o que pressupõe que apenas uma técnica para ensinar diversos aprendizes situados no mesmo ambiente não é eficaz. Os alunos não podem ser tratados de maneira uniforme, com as mesmas aulas preparadas para quem sabe muito, alguma coisa ou nada sobre o assunto e ainda possuem estilos de aprendizagem diferentes. O funcionamento coletivo pode marginalizar os alunos que têm mais 10 necessidades de aprender (PERRENOUD, 1999). Dessa maneira, o professor deve investir na capacidade do aluno para ajustá-lo da melhor forma possível com o resto da classe. Habilidades e técnicas devem ser aprendidas separadamente, uma por vez; novas habilidades e/ou técnicas devem ser construídas a partir de uma habilidade e/ou técnica aprendida previamente e, portanto, aprendizado e conhecimento são ambos hierárquicos por natureza (GAGNÈ, BRIGGS e WALTER, 1992). Portanto, um aluno deve ter um conhecimento sólido de um conceito antes de aprender outro conceito que utilize o primeiro. Os conceitos mais amplos devem servir como âncora para as novas idéias e informações, possibilitando sua retenção (AUSUBEL, 1980; PEZZA, 2004). Neste trabalho que tem por objetivo definir um modelo para a avaliação e acompanhamento do nível de aquisição de conhecimento do aprendiz, o foco será na aprendizagem significativa de Ausubel. Para Ausubel (1980), a aprendizagem significativa ocorre quando a nova informação ancora-se em conceitos relevantes preexistentes na estrutura cognitiva de quem aprende (MOREIRA e MANSINI, 2001). No processo de aprendizagem significativa, cada nova informação deve se relacionar com um aspecto relevante que já é de conhecimento do indivíduo. Dessa forma, determinar o que o aprendiz sabe para o processo de ensino aprendizagem é muito importante neste âmbito (AUSUBEL, 1968). Quanto melhor a estrutura cognitiva de um aluno e esta for organizada adequadamente, mais fácil será a aprendizagem e a retenção de um novo conceito. A aprendizagem significativa pressupõe que o aprendiz manifeste uma disposição de relacionar o novo material ensinado de maneira substantiva e não arbitrária à sua estrutura cognitiva. Ou seja, basicamente o que se conclui é que o tópico ensinado deve fazer sentido ao aluno, caso contrário ele não será devidamente assimilado (PEZZA, 2004). Os conceitos aprendidos de forma significativa ficam gravados na memória por mais tempo, às vezes por toda a vida (NOVAK, 1998). Quando o material a ser aprendido não consegue ligar-se a algo já conhecido, ocorre o que Ausubel chamou de aprendizagem mecânica. Assim, a pessoa decora fórmulas, leis, dicas para provas e os esquece em pouco tempo, pois aquelas novas informações foram armazenadas de maneira arbitrária (FRANÇA, 2004). Nos dias atuais, onde muitas habilidades são exigidas dos profissionais, a aprendizagem mecânica deve ser evitada e é importante que casos com estas características sejam reconhecidos. 11 O material aprendido, Ausubel chamou de conceitos subsunçores ou, somente, subsunçores. Um subsunçor é uma estrutura específica ao qual uma nova informação pode se integrar ao cérebro humano. Este, por sua vez, é altamente organizado e detentor de uma hierarquia conceitual que armazena experiências prévias do aprendiz (MELO, 1999). A função dos conceitos subsunçores na aprendizagem significativa é permitir que uma informação nova e relevante seja incorporada à estrutura de conhecimento do indivíduo (NOVAK, 1998). A aprendizagem significativa pode ser facilitada através dos seguintes princípios (Moreira e Masini, 2001): • Diferenciação progressiva – É o princípio segundo o qual o conteúdo a ser apresentado aos aprendizes deve ser programado de maneira que os conceitos mais gerais do conteúdo sejam apresentados em primeiro lugar, e, pouco a pouco, introduzidos os conceitos mais específicos. • Reconciliação integrativa – Sugere que a programação do conteúdo a ser apresentado aos aprendizes deve ser feita de maneira que haja exploração dos relacionamentos entre as idéias, apontando semelhanças e diferenças entre conceitos relacionados. A Figura 2.1, parcialmente extraída de LEITE (1999), demonstra a hierarquia de conceitos (mapa conceitual) proposta na Teoria da Aprendizagem Significativa de Ausubel. Os conceitos mais abrangentes, organizadores prévios de Ausubel, devem ser aprendidos em primeiro lugar, logo após, os conceitos intermediários, depois, os conceitos específicos, de acordo com o princípio da diferenciação progressiva. Dessa forma, um tópico ensinado deve fazer sentido ao aluno. Em cada etapa do aprendizado, existe o processo de reconciliação integrativa, que explora o relacionamento entre idéias, indicando possíveis semelhanças e diferenças entre os conceitos relacionados. O curso de Ciência da Computação tem a computação (SBC, 1999) como atividade fim e o foco principal está nas disciplinas relacionadas a algoritmos e arquiteturas. Neste curso, o que acontece com bastante freqüência é o fato de o professor gastar muito tempo revisando um determinado tópico ou gastar mais que o tempo previsto em certo conceito e com isso não trabalhar o programa completo, prejudicando assim, os alunos que possuem condições de acompanhar o curso em sua totalidade (PEZZA, 2004). 12 Figura 2.1 - Modelo de Hierarquia de Conceitos - Teoria da Aprendizagem Significativa de Ausubel (LEITE, 1999, modificada). Além disso, a ementa é muito extensa para o período em que é lecionada. Assuntos complexos como iteração, ponteiros e computação gráfica precisam de pré-requisitos bem definidos no conhecimento do estudante. Logo, conclui-se que aprender a programar em um curso de Ciência da Computação não é fácil e isto se reflete nos baixos níveis de assimilação e grandes índices de repetência experimentados por muitos alunos nos cursos de programação introdutórios (BOULAY, 1986). Outro problema grave, em um curso de Ciência da Computação, é a falta de comunicação entre os professores das várias disciplinas, sejam elas do mesmo semestre ou de semestres seguintes (PIMENTEL, FRANÇA e OMAR 2003), utilizando conceitos que não foram abordados com a devida importância. O levantamento de uma hierarquia de conceitos dentro de um curso e não dentro de uma disciplina, facilita a visualização dos conceitos com fortes relacionamentos interdisciplinares, facilitando aos coordenadores do curso aperfeiçoamento da ementa. Os critérios de avaliação utilizados permitem que um aluno que não aprendeu nem 50% dos conceitos da matéria, consiga aprovação nesta disciplina. O fato de o estudante ter obtido uma média 5.0, não significa que o mesmo domina metade de tudo que foi abordado. 13 Significa apenas que o mesmo aproveitou metade dos pontos disputados nas avaliações. Pode ser que o mesmo tenha se saído muito bem em um determinado tópico e não tenha absorvido absolutamente nada em outros, o que pode vir a ser um problema quando o estudante necessitar deste conhecimento futuramente em disciplinas avançadas e na sua vida profissional. A conseqüência desta realidade é que os estudantes são tratados como se tivessem conhecimentos e dificuldades iguais, afetando negativamente os estudantes com lacunas de aprendizagem (PIMENTEL, 2006). Em programação, “saber um conceito” e saber “aplicar um conceito” tem diferentes significados. Quem apenas sabe um conceito não tem sucesso em desenvolvimento de códigos onde aplicações de conceitos são imprescindíveis. A Figura 2.2 demonstra o mapa conceitual da aprendizagem significativa de dois alunos: A e B. Mapas conceituais auxiliam a visualização da estrutura de conceitos de um determinado meio e são brevemente descritos no capítulo a seguir. O aluno A sabe aplicar o conceito de polimorfismo, porém tem uma noção de uso de orientação a objeto. O aluno B não sabe aplicar em programação o conceito de classe, fazendo que quase todo seu conhecimento em práticas de orientação a objeto fique comprometido. Como em vários momentos do curso de Ciência da Computação, a orientação a objeto é utilizada, esse aluno apenas conseguirá ser “aprovado” nas disciplinas através da aprendizagem mecânica. Figura 2.2 - Exemplo de aprendizagem significativa em um curso de Ciência da Computação 14 O professor muitas vezes não é capaz de dar um feedback com qualidade ao aluno, pois possui uma carga de tarefas muito grande, como elaborar, corrigir provas e preparar aulas. Para que exista um acompanhamento individualizado do aluno, levando em conta que uma turma de Ciência da Computação em uma Universidade pode possuir elevado número de alunos, a melhor maneira de personalizar o tratamento ao estudante é através de sistemas apoiados por computadores, aqui chamados de Ambiente Computacional de Aprendizado (ACA). Não é propósito desse trabalho demonstrar a construção e o emprego de um ACA completo, como os ACAs categorizados como LMS (Learning Management Systems – Sistemas de Gerenciamento de Aprendizagem) (GREENBERG, 2002), e sim de atacar pontualmente o suporte educacional ao processo de avaliação, no ambiente que será referenciado neste trabalho, o como ambiente computacional de avaliação da aprendizagem. A teoria da aprendizagem significativa procura levar em conta os conhecimentos prévios dos alunos e utilizá-los como base na construção de novos conhecimentos. Para isso, faz-se necessário uma forma de acompanhamento da aprendizagem dos alunos, para que o professor tenha condições de saber qual o nível de entendimento dos alunos perante os conceitos que foram ensinados (PEZZA, 2004). Este acompanhamento da aprendizagem é feito através da avaliação continuada que será introduzida na seção a seguir. 2.2 Avaliação Continuada da Aprendizagem A avaliação é uma atividade meio, não uma atividade fim que servirá apenas para comprovar dados. Ela deve ser vista como meio para análise e detecção de problemas no aprendizado dos aprendizes através de seus resultados (RODRIGUES e GEYER, 2000). A avaliação do processo de aprendizagem consiste em verificar em que medida os objetivos instrucionais foram atingidos. Ou seja, consiste em verificar se a ação pedagógica conseguiu realizar as mudanças comportamentais de habilidades e de conhecimento propostos (CUNHA, 2002). Não basta que o professor ensine. É preciso que o aluno aprenda, ou o processo não estará completo (PIMENTEL, FRANÇA e OMAR 2003). Constatar que o aprendizado foi efetivado motiva a quem ensina e auxilia a quem aprende. Porém, as notas das avaliações 15 nos dão uma idéia genérica do que o aluno aprendeu, escondendo assim o verdadeiro estado cognitivo do aprendiz. De acordo com Pimentel (2006), o que caracteriza a diversidade de avaliações existentes é o tipo de abordagem em relação à aprendizagem. A Tabela 2.1 relata estes diferentes tipos de avaliação: Tabela 2.1 - Resumo dos paradigmas quanto aos tipos de abordagem da aprendizagem (PIMENTEL, 2006) Abordagem Método de Avaliação Comportamental Pré-testagem, com a finalidade de conhecer os comportamentos prévios e a partir daí, planejar e executar as etapas seguintes do processo ensino-aprendizagem. A avaliação é ligada aos objetivos estabelecidos. No final do processo ocorre a avaliação com o objetivo de medir os comportamentos finais. Cognitivista A avaliação tradicional através de provas, notas e exames encontra pouco respaldo nesta abordagem na qual o controle de aproveitamento deve ser apoiado em múltiplos critérios. Humanista A auto-avaliação é defendida e incentivada na abordagem humanista. O estudante deverá assumir responsabilidades pelas formas de controle de sua aprendizagem, definir e aplicar os critérios para avaliar até onde estão sendo atingidos os objetivos que pretende. Social Para avaliar o estudante, deve-se verificar sua observação com relação ao modelo apresentado. Muitas práticas atuais, nos diversos ambientes de aprendizagem, falham ao não propiciarem uma avaliação que sirva de apoio para a aprendizagem. A grande atenção dada a uma única medida (nota), atua como um fator inibidor e desestimulador da aprendizagem. Faz-se necessário assim, remodelar as formas de avaliar, criando mecanismos capazes de identificar lacunas que impedem a aprendizagem e assim criar novas oportunidades de aprender (PIMENTEL, 2006). 16 Como novo procedimento de avaliação, destacam-se a avaliação continuada e a realimentação (feedback) como elementos integrantes do processo de ensino-aprendizagem e não mais como medidores de informações apresentados por estudantes em situações de tensão, nervosismo e outros fatores. Caracterizada pela avaliação que ocorre durante o curso em direção à "nota final", a avaliação contínua possui geralmente finalidades formativas. O "produto avaliado" é retornado ao estudante, geralmente acompanhados por comentários (feedback), com o objetivo de indicar os pontos fortes e fracos (PIMENTEL, 2006). A avaliação continuada da aprendizagem, como parte do processo, deve ser vista como uma ferramenta capaz de realimentar o aprendiz, indicando o seu nível de aquisição do conhecimento (PEZZA, 2004), em cada conteúdo, diagnosticando as lacunas de aprendizagem a serem preenchidas para que o aprendiz possa dar o próximo passo, utilizando as informações obtidas com as avaliações formais e informais como uma maneira de aprender sobre como os estudantes estão constituindo o conhecimento. Com o experimento da avaliação continuada, através de ambientes computacionais de avaliação da aprendizagem, as características da aprendizagem significativa podem ser estudadas a fundo. O professor é capaz de observar que um aluno pode ter sua aprendizagem em um conceito prejudicada, em conseqüência de conceitos que não adquiriu anteriormente. A importância de que um professor consiga identificar estes conceitos caracteriza o motivo do estudo do ambiente computacional, cujo modelo conceitual está relacionado no capítulo a seguir. 17 3 Modelo Conceitual do Ambiente de Avaliação Continuada A forma mais adequada de um professor acompanhar o desempenho de seus alunos e completar a aprendizagem, quando se tem uma turma grande em quantidade, é através de ambientes computacionais. Atualmente, ambientes computacionais de aprendizagem (ACAs), gerenciam alunos e representações de conhecimento, como pode ser visto em França (2004). Existem várias técnicas de representação de conhecimento. Dentre as mais freqüentemente utilizadas destacam-se, segundo Rezende (2003): representação lógica, regras de produção, redes semânticas, frames, etc. Dentre as redes semânticas, a representação escolhida foi a ontologia, pois nestes ambientes também se faz necessário prover ao professor o gerenciamento do conteúdo da sua disciplina, através da linguagem formal, mais simples forma de se representar um conteúdo. Neste aspecto, a ontologia combinada com o uso de mapas conceituais pode contribuir, estruturando a ementa para facilitar seu controle e visualização. Isso posto, este capítulo apresentará o modelo conceitual utilizado no desenvolvimento de métodos de representação da aprendizagem, através do sistema de avaliação continuada, composto de três componentes que serão discutidos em seções distintas. Na Seção 3.1 apresenta-se o conceito de ontologia e como realizar seu desenvolvimento. Na Seção 3.2, descrevem-se mapas conceituais e sua relação com a ontologia. E, por fim, na Seção 3.3 é discutida a arquitetura geral de um ambiente computacional de aprendizagem (ACA). 3.1 Ontologias Em ambientes computacionais de aprendizagem baseados no computador, a escolha correta de um vocabulário e uma conceituação, pode ajudar na melhora da qualidade do 18 sistema e em sua efetiva capacidade em promover a aprendizagem. Por exemplo, o currículo de uma disciplina, isto é, o conjunto de tópicos a serem ensinados e sua organização, deve ser modelado e organizado de forma a facilitar o aprendizado e as decisões instrucionais do sistema (SANTOS, BARROS e VALENTE, 2001). Com a finalidade de promover a divisão em conceitos das disciplinas de um Curso de Ciência da Computação em um ambiente computacional de aprendizagem através da categorização e descrição de dados, um modelo ontológico e sua instanciação foram desenvolvidos neste trabalho. Ontologia é a “especificação formal de uma conceituação compartilhada”. A palavra conceituação refere-se a uma abstração, visão simplificada do mundo que desejamos representar para algum propósito, construindo através da identificação dos conceitos e relações relevantes. Formal significa que a ontologia deve ser compreensível por um computador (não pode ser somente escrita em linguagem natural). Finalmente, compartilhada implica em que o conhecimento representado é consensual, aceito por um grupo e não por um só indivíduo (DUINEVELD, STOTER, WEIDEN, KENEPA e BENJAMINS, 1999). Ou seja, fornece a descrição de conceitos e relações existentes em um dado domínio com o objetivo de definir um modelo conceitual que reduza ou elimine confusões terminológicas e ofereça uma estrutura de trabalho unificada de entendimento comum sobre o domínio (GRUBER, 1993). Entende-se por análise de domínio a tentativa de identificar os objetos, operações e relações em um determinado domínio (GUIZZARDI 2000). Para a elaboração de uma ontologia, é necessária a definição de etapas bem estruturadas. O primeiro passo consiste em construir seu modelo de domínio, que representa um conjunto de itens de informação presentes em certo contexto do mundo real. Logo após é feita a especificação de requisitos caracterizada por identificar claramente os seus propósitos e os usos esperados pela ontologia. Depois, é realizada a captura da ontologia que estabelece os conceitos e relações do universo do discurso e a aquisição de dados. A próxima fase é a formalização da ontologia, definindo sua representação. Em paralelo às últimas duas fases, são construídas a avaliação e a documentação. O próximo passo é definir as classes, identificar sua hierarquia e definição de suas propriedades. As propriedades podem possuir atributos (também conhecidos como slots) que descrevem as 19 propriedades que poderão ser particulares para cada instância de uma classe e restrições (também chamados de facets ou role restrictions). As atividades para o processo proposto da construção do modelo de domínio e da formação da ontologia são vistas na Figura 3.1. Figura 3.1 - Atividade do processo de análise de domínio e formação da ontologia Os componentes de uma ontologia, segundo Pérez (2002), são cinco: • Conceito: em resumo, pode ser “qualquer coisa” a respeito de “algo” que será explicado; • Relação: tipo de interação entre conceitos de um domínio e seus atributos; • Função: tipo de relação; • Axiomas: modelam sentenças que são sempre verdadeiras e; • Instâncias: representam elementos do domínio associados a um conceito específico. A finalidade da conceitualização e instanciação da ontologia neste trabalho se dão pelo motivo da construção do conteúdo instrucional do Curso de Ciência da Computação, contendo os conceitos ensinados no decorrer do curso, procedimento que será descrito no 20 Capítulo 4. No entanto, a ontologia criada pode ser utilizada em qualquer curso de graduação. Quando uma ontologia é instanciada, pode ser graficamente descrita por um mapa conceitual, cujo conceito será apresentado na seção a seguir. 3.2 Mapas Conceituais Uma ontologia pode ser graficamente descrita por um mapa conceitual, que são diagramas que indicam relações entre conceitos 018#-. Podem ser vistos como diagramas hierárquicos que refletem a organização conceitual de uma disciplina ou parte dela, enfatizando assim, sua estrutura conceitual. Foram apresentados por Novak em 1998, como uma técnica a ser utilizada como apoio à teoria de aprendizagem significativa de Ausubel (1980). De acordo com Novak e Gowin (1984), os mapas conceituais enquanto ferramenta educacional, são uma forma de ajudar alunos e educadores a verem os significados dos materiais de aprendizagem. O responsável pela organização das disciplinas no curso pode reestruturar conceitos repetitivos em disciplinas diversas e formular de uma melhor forma suas ementas através dos mapas. Na Figura 3.2, o Mapa Conceitual representa todos os pré-requisitos conceituais para poder aprender através de aprendizagem significativa o conceito de estrutura do tipo if...else, baseado no princípio ausubeliano de diferenciação progressiva (MOREIRA E MANSINI, 2001), onde a orientação é tal que os conceitos mais gerais e inclusivos aparecem no topo do mapa. Os outros conceitos aparecem em ordem descendente de inclusividade até que na parte inferior do mapa, chega-se aos conceitos mais específicos. As linhas que conectam os conceitos sugerem uma relação de subordinação entre eles e deve conter uma sentença que indique essa relação de subordinação. Contudo, nem sempre os mapas conceituais são esquematizados desta forma. Orienta-se seguir as setas, quando existirem, para verificar o fluxo dos conceitos. A finalidade do uso dos mapas conceituais na aplicação é possibilitar que o professor ou aluno, ao identificar problemas de aprendizagem em um conceito, desenvolva 21 um levantamento de todos os pré-requisitos que são necessários para a aprendizagem significativa deste conceito, através da instanciação da ontologia do curso. Figura 3.2 - Mapa Conceitual - If...else Para operar a ontologia e os mapas conceituais, ambientes computacionais de aprendizagem (ACA), com funções gráficas podem ser utilizados. Os ACAs são discutidos na seção a seguir. 3.3 Ambientes Computacionais de Aprendizagem e sua arquitetura lógica Ambientes computacionais de aprendizagem (ACA) são tecnologias de informação e comunicação aplicadas ao processo de ensino-aprendizagem, utilizando o computador no sistema educacional (PIMENTEL, 2006). 22 O modelo de um ACA possui módulos responsáveis por características específicas na interação com seus usuários. O ACA desenvolvido é baseado no paradigma instrucionista de aprendizagem proposto em (PIMENTEL e OMAR, 2006) que possui uma estrutura organizada nos seguintes módulos: administração, comunicação, acompanhamento, aprendiz, avaliação e conhecimento. A Figura 3.3 mostra a arquitetura do ambiente. A seguir o ACA será descrito módulo a módulo. Os componentes dos módulos e suas dependências no sistema desenvolvido serão tratados no Capítulo 5. Figura 3.3 - Arquitetura Geral do ambiente computacional o Módulo de Comunicação - O módulo de comunicação é responsável pela interface do sistema. Serve para a comunicação entre o sistema e o usuário. Sua função básica é traduzir a representação interna do sistema para uma “linguagem” que seja compreensível e estimulante para os usuários (PIMENTEL, 2006). 23 o Módulo de Acompanhamento – O módulo de acompanhamento compreende feedback e análise dos resultados tanto pelo aprendiz quanto pelo professor. Envolver o aprendiz na reflexão sobre seus próprios processos de aprendizagem, fornecendo orientação que o conduzam a revisões progressivas que melhorem sua atividade e raciocínio, é um fator que torna um ambiente de aprendizagem eficaz (BRANSFORD, 2003). o Módulo de Administração – O módulo de administração compreende diversos tipos de cadastros, edições e exclusões com o objetivo de gerenciar o conteúdo do ACA. o Módulo do Aprendiz – O módulo do aprendiz armazena o histórico de avaliações dos aprendizes e a representação do estado atual do conhecimento. Os dados armazenados são utilizados juntamente com os outros módulos para conduzir o tipo de tarefa a ser apresentada para as necessidades de um determinado estudante. o Módulo de Avaliação – O módulo de avaliação compreende as unidades de avaliações que são base para a montagem da avaliação e correções. É o responsável por planejar a interação com o estudante, através das avaliações que são aplicadas à ele, de acordo com seu nível de conhecimento. o Módulo do Conhecimento – O módulo do conhecimento abrange o domínio do conteúdo que será utilizado no curso sobre o qual deseja fazer o acompanhamento da aprendizagem. Sua função básica é servir como fonte de conhecimento do assunto a ser ensinado ao estudante. Neste trabalho, um ACA é desenvolvido, e sua ênfase é na avaliação de indivíduos e gerenciamento de conceitos da ontologia. A modelagem ontológica de um curso de graduação é apresentada na seção seguinte. 24 4 Modelagem Ontológica de um Curso de Graduação e sua Instanciação em Ciência da Computação Ao elaborar um material didático, torna-se necessário a criação de uma estrutura que organize as informações contidas neste material. A estruturação do conteúdo pode ser realizada através da construção de ontologias (FRANÇA, 2004). Nos dias atuais, na Universidade Presbiteriana Mackenzie, precisamente no curso de Ciência da Computação, o material que existe para a estruturação das matérias dos cursos, consiste em documentos que citam a ementa através de conteúdos, as grades curriculares do curso, que pode ser verificada no Anexo A. Porém, a grade curricular apenas indica os conceitos e uma breve introdução, não deixando claro o relacionamento entre eles e sua inclusão no contexto do curso. Este capítulo trata da ontologia que serviu de base para a construção do ambiente. A Seção 4.1 apresenta a modelagem ontológica para um curso de graduação qualquer. Na Seção 4.2 é abordada a construção da instanciação para a ontologia criada, ou seja, a população da ontologia com dados. A metodologia seguida neste trabalho foi baseada na metodologia descrita na Seção 3.1 do Capítulo 3 e também foi utilizada por Pezza (2004). 4.1 Modelagem Ontológica para um curso de graduação A ontologia proposta representa o domínio de um curso de graduação. Seus usuários são professores e alunos. Um curso contém uma ou mais disciplinas, sendo elas prérequisito ou não de uma outra disciplina. Uma disciplina contém conteúdo e este é fragmentado em conceitos. Conceitos possuem pré-requisitos e pós-requisitos e, esta dependência foi modelada e instanciada neste trabalho. 25 Na fase de criação da ontologia é importante a definição de um dicionário de termos. Desta forma, o sistema pode reconhecer termos com sintaxes diferentes, mas com significados semelhantes. O dicionário de termos da ontologia é apresentado na Tabela 4.1 e trata-se de sinônimos para os termos mais importantes de um curso. Tabela 4.1 - Dicionário de Termos para representação de conteúdos educacionais Termo Termos Equivalentes Curso Especialidade Disciplina Cadeira, matéria, ramo de conhecimento Conceito Definição, tópico Para desenvolver a ontologia seu domínio deve ser capaz de responder questões de competências do tipo: o Quais os pré-requisitos de um conceito? Para aprender um conceito, deve ter conhecimento sobre quais outros conceitos? o Quais os pós-requisitos para um conceito? O que posso aprender a partir de um determinado conceito? o Qual a relação entre dois conceitos? o Quais conceitos formam uma área de conhecimento em um curso de Ciência da Computação? Quais conceitos pertencem à área de conhecimento de arquitetura de computação e quais conceitos pertencem à área de programação? o Quais conceitos são lecionados em mais de uma matéria? Isto posto, foram definidos os seguintes requisitos para a ontologia em desenvolvimento: • Deve permitir a representação dos conceitos ensinados no Curso de Ciência da Computação. Na Figura 4.1, visualizamos exemplos destes conceitos: • Deve associar os conceitos às suas disciplinas. Quando um conceito é utilizado por mais de uma disciplina esta representação deverá estar clara para a ontologia. O exemplo é visto na Figura 4.2. 26 Figura 4.1 - Exemplos de Conceitos Figura 4.2 - Relação entre Disciplinas e Conceitos • Deve representar formalmente as dependências, tanto de “é pré-requisito para” como “depende de” de um conceito, relações chamadas de árvores de classificação de conceitos, que indicam o relacionamento entre estes, como demonstrado na Figura 4.3. Figura 4.3 - Dependências entre Conceitos 27 • Deve representar os Cursos aos que as disciplinas e os conceitos sejam relacionados. Como por exemplo, os curso de Ciência da Computação, Curso de Turismo, Curso de Medicina. • Deve abranger todos os conceitos normalizados e assim, suas instâncias, evitando redundâncias. Como exemplo, as repetições que acontecem nas revisões de conceitos básicos do Curso de Ciência da Computação cada vez que é ensinada uma nova linguagem. A Figura 4.4 (a) mostra a repetição de conceitos básicos a vários outros conceitos. Para aprimorar a construção da ontologia, recomenda-se utilizar a técnica utilizada na Figura 4.4 (b), que relaciona apenas uma vez o conceito específico aos conceitos mais abrangentes. Figura 4.4 - Instâncias Normalizadas em uma Ontologia 28 A modelagem dos conceitos e das disciplinas do Curso de Ciência da Computação foi feito utilizando a versão 3.2 do software Protegé, 2006, que permite representar a hierarquia (relação depende de/ é pré-requisito para) de conceitos do domínio (Exemplo de um domínio: Definição e iniciação de Variáveis→Operadores Relacionais→Estrutura do Tipo If...Else) incluindo herança múltipla. Como exemplo, a Figura 4.5 representa um pequeno trecho da taxonomia dos conceitos modelados e ilustra as definições da hierarquia dos conceitos de uma pequena parte de um curso de Ciência da Computação. Figura 4.5 - Parte da hierarquia da ontologia 29 A Figura 4.6 mostra um exemplo da tela do software Protegé. Pode-se notar a definição da ontologia para a modelagem desse projeto, cuja visão geral pode ser observada no Class Browser, onde todas as classes são exibidas, localizado no lado esquerdo. Enquanto que na parte inferior direita é exibida uma lista com os atributos (slots) da classe que está selecionada. Figura 4.6 – Cadastro de classes no Protegé As classes identificadas no domínio de conteúdos educacionais que formam a ontologia são visualizadas no diagrama de classes da Figura 4.7. Figura 4.7 - Diagrama de Classes da Ontologia 30 As classes envolvidas no processo de representação do conhecimento definido são: Conceito, Disciplina e Curso. A classe Conceito contém os seguintes atributos: • Conceito: nome do conceito, que representa a formulação de uma idéia por palavras; • Disciplina: lista de instâncias da classe Disciplina contendo as disciplinas que possuem este conceito; • Depende_de: lista de instâncias da classe Conceito indicando os conceitos que são pré-requisitos para este conceito; • Pre_requisito_para: lista de instâncias da classe Conceito indicando os conceitos que são dependentes deste. É importante notar que é justamente a partir dos atributos Depende_de e Pre_requisito_para que se torna possível montar toda a estrutura de interdependências de conceitos do curso, tendo assim uma visão geral das relações existentes entre as disciplinas e os conceitos ensinados (PEZZA, 2004). A classe Disciplina representa uma das matérias lecionadas em uma das etapas do curso e contém os seguintes atributos: • Nome da Disciplina: indica o nome de um conjunto de conceitos de características comuns entre si; • Conceitos_Disciplina: Lista de instâncias da classe Conceito, representando os conceitos que são ensinados na disciplina; • Etapa: Período do curso em que a disciplina é ministrada. Pode representar um período de tempo anual ou semestral; • Curso: Lista de instâncias da classe Curso, representando os Cursos que possuem esta disciplina. A classe Curso representa o conjunto de matérias ensinadas segundo um programa em um estabelecimento de ensino, seus atributos são: • Nome do Curso: indica o nome do curso; • Disciplinas: Lista de instâncias da classe Disciplina. Contém todas as disciplinas existentes no curso; 31 A Tabela 4.2 mostra os componentes da ontologia desenvolvida e seus respectivos exemplos, baseado nos componentes citados no Capítulo 3: Tabela 4.2 - Componentes da Ontologia Componente Exemplo Conceito Relação Função Axioma Conceito pertence à Disciplina Instância 4.2 Construção de Instâncias O registro da ontologia até o nível de conceito básico, das disciplinas formará uma base de dados do conhecimento dinâmica sobre o domínio do curso de Ciência da Computação, com ênfase à programação. A presente versão da ontologia desenvolvida tem como base a ementa referente às disciplinas dos 4 primeiros semestres da ementa nova (referente ao ano de 2006) e nas disciplinas dos 4 últimos semestres da antiga ementa (referentes a anos anteriores a 2006) do Curso de Ciência da Computação da Universidade Presbiteriana Mackenzie, procurando dar ênfase às disciplinas específicas da área de computação. O objetivo dessa ontologia assim como em França (2004), é que ela auxilie no direcionamento do processo de ensino/aprendizagem do referido curso. As referidas ementas estão disponíveis para consulta no Anexo A desta dissertação. Depois da definição das classes e propriedades, foram definidas as instâncias para a base da ontologia. As instâncias representam indivíduos específicos de uma determinada classe. Primeiramente todas as instâncias são digitadas diretamente no software Protegé, que esquematiza uma forma amigável de inclusão de instâncias de acordo com a ontologia 32 construída. Logo após, através da ferramenta de importação de dados do próprio Protegé, tudo que foi cadastrado é extraído para um arquivo de extensão XML. De acordo com as disposições das informações importadas no arquivo XML, linhas de código SQL são criadas para extrair os dados deste arquivo e incluir na tabela e coluna corretas do banco de dados relacional, como esquematizado na Figura 4.8. Figura 4.8 – Rotina de migração dos dados do Banco Protegé para Banco de Dados Relacional PostreSQL 0 Este conceito depende de 3 pré-requisitos Após aprender dispositivos de E/S, todos estes conceitos serão ligados à ele facilmente, segundo o princípio da aprendizagem significativa Figura 4.9 - Instância da classe conceito no Protegé É possível observar na Figura 4.9, a partir da interface do Protegé, a instanciação da classe conceito. Por exemplo, uma instância da classe conceito sobre “Dispositivos de 33 entradas e saída”, a propriedade Depende_de recebe, por exemplo, o valor “Organização básica de um computador”, a propriedade Pre_requisito_para recebe o valor “Barramentos” e a propriedade Disciplina os valores “Ambientes Operacionais” e “Sistemas Operacionais”. Esta ontologia apresentada é base conceitual para o sistema cuja construção é abordada no capítulo a seguir. 34 5 Análise e Construção do Sistema da Avaliação Continuada Este capítulo trata da análise e construção do sistema de avaliação continuada desenvolvido neste trabalho e denominado ACAvA (abreviatura de Ambiente Computacional de Avaliação da Aprendizagem). A unidade de avaliação que será medida, o nível de aquisição do conhecimento (NAC), é apresentado na Seção 5.1. As funcionalidades que cada componente do ambiente computacional de aprendizagem possui são descritas na Seção 5.2 Na Seção 5.3 as tecnologias utilizadas são apresentadas. A Seção 5.4 consiste da explicação do modelo conceitual de dados do sistema. Por fim, na Seção 5.5 a modelagem UML é apresentada através dos diagramas de caso de uso e classe. Pezza (2004), modela um ambiente para o gerenciamento dos NACs. Neste trabalho, além de gerenciamento dos NACs também são abordados o gerenciamento da ontologia e a possibilidade do sistema reconhecer níveis de conhecimento através de exercícios. O ambiente educacional tradicional é baseado na sala de aula, com raras atividades extra-classes. O ACAvA proposto agrega à teoria tradicional a prática modernizada, via avaliação continuada e é base para desenvolvimento de um sistema que auxilie o professor à mudança do paradigma da sala de aula. O sistema desenvolvido permite a anotação em tempo real do desenvolvimento do aprendizado do aluno. Pode ser utilizado no dia-a-dia da sala de aula presencial (aulas de laboratório) ou virtual (ambientes com conexão à internet). O ACAvA, da forma que foi projetado, pode receber informações de qualquer curso de graduação, independente da área em que o curso se encontra. Para tanto, basta desenvolver a ontologia referente a este curso e, como visto no Capítulo 4 e integrar ou migrar seus dados para o sistema. A página inicial do ACAvA, que comporta todas suas funções é apresentada na Figura 5.1. 35 Figura 5.1 - Página inicial do ACAvA O desenvolvimento da ontologia de Ciência da Computação apresentada neste trabalho no capítulo anterior serve para sustentar a construção de um ambiente on-line, de complementação do aprendizado das disciplinas no referido curso através do acompanhamento do conhecimento do aluno considerando seu NAC, que será abordado na seção a seguir. 5.1 Nível de Aquisição do Conhecimento Cada unidade de avaliação deve, de certa forma, refletir os objetivos de aprendizagem num domínio específico de conhecimentos ou em um conjunto deles (multidisciplinaridade) (PIMENTEL, 2006). Para que seja possível, a estruturação do domínio de conhecimento, o domínio da ontologia deve estar previamente definido. 36 Para Pezza (2004) os conceitos preexistentes na estrutura cognitiva do aluno são chamados de Nível de Aquisição de Conhecimento, ou NAC (PEZZA, 2004). NAC é definido sucintamente como “uma medida que indica o grau de conhecimento do aprendiz num determinado conteúdo de um domínio de conhecimento, naquele instante”. Esta medida será resultante do conjunto de avaliações contínuas realizadas pelo aprendiz e será sempre estratificada por conceitos ou grupos de conceitos (PIMENTEL, 2006). Composto de um valor numérico que varia de 0 a 10 é atribuído para cada aluno relacionado com cada conceito ensinado no curso num determinado instante. No sistema proposto pode ser atribuído pelo professor, pelo próprio aluno ou obtido através de resolução de exercícios, como de acordo com a Figura 5.2. Figura 5.2 – Formas de Atualização do NAC Através de um acompanhamento permanente do NAC dos alunos, deve ser possível detectar quais os conceitos em que a aprendizagem foi mais problemática, e com isso os professores teriam informações mais detalhadas para saber exatamente qual conceito ainda poderia ser mais trabalhado e também qual o conceito que já foi assimilado 37 satisfatoriamente pela maioria dos alunos e não precisa mais ser revisto, já que a repetição excessiva de um assunto já aprendido pode tornar o aprendizado desmotivante para os alunos e com isso prejudicar o seu aproveitamento (PEZZA, 2004). Acompanhando o NAC dos alunos é possível levantar seu histórico de aprendizagem e progresso, dirigindo o ensino, incluindo nisso a avaliação de seus resultados. Como discutido anteriormente, existem três formas de avaliação para a obtenção do Nível de Aquisição do Conhecimento (NAC) no sistema: 1. O professor atualiza o NAC do aluno: o professor possui conhecimento do nível do aluno em certo conceito e pode atualizá-lo; 2. O aluno atualiza seu próprio NAC: feedback do próprio aluno sobre seu conhecimento em determinado conceito. Assim o aprendiz tem a oportunidade de refletir sobre seu próprio conhecimento, bem como determinar aquilo que já sabe, o que traz para a escola, os conhecimentos prévios. A Figura 5.3 representa a funcionalidade do sistema que permite a atualização, tanto por parte do professor, quanto por parte do aluno; Figura 5.3 - ACAvA: Atualização do NAC 38 3. O aluno realiza um exercício, em forma de testes objetivos, relacionado a diversos conceitos. Quando acerta ou erra um exercício, seu NAC é atualizado automaticamente pelo sistema. Segundo levantamento de Pimentel (2006), de todos os mecanismos de avaliação, o que mais prosperou com o uso do computador foram os testes objetivos, devido à facilitação dos processos das avaliações em virtude do acesso a material de apoio e banco de questões e a correção automática. Pfaffman (2003), também afirma que em ambientes de aprendizagens, mesmo testes somativos podem ser construídos para fornecer feedback formativo. Dessa forma, a aplicação dos referidos testes foi escolhida como um parâmetro de entrada do NAC no sistema. O NAC pode variar de 0 a 10. O valor 0 é atribuído a um NAC se um conceito foi ensinado e não foi assimilado pelo aluno. Durante o período de um mês, quando o NAC de um aluno é alterado, seu valor sobrescreve o valor cadastrado no mesmo mês. Ao final de um mês, o NAC não deverá ser mais alterado com o objetivo de criar um histórico para posterior análise por parte do professor. As novas atualizações de NAC, a partir desse momento, são relacionadas com o novo mês, gerando assim, informações que permitam o acompanhamento da aprendizagem, como pode ser visto na Tabela 5.1. O objetivo do trabalho é que após o período de 4 anos coletando dados, o professor consiga visualizar o resultado da avaliação continuada dentro de um curso. Considerando que cada mês possuirá um valor para o NAC, 48 valores mostram-se suficientes para a observação do professor. Tabela 5.1 - Atualização do NAC Aluno: A NAC - Jan/06 NAC - Fev/06 Conceito A 0 0 Conceito B 3 Conceito C 68 Conceito D 7 2ª atualização realizada em JAN/06 7 8 1ª atualização realizada em FEV/06 7 O NAC é manipulado no módulo de acompanhamento da arquitetura do ACAvA, assunto tratado na seção a seguir. 39 5.2 Arquitetura do ACAvA Os componentes do ambiente de computação são mostrados na Figura 5.4, que representa a arquitetura do ACAvA. Figura 5.4 – Arquitetura geral do ambiente de computação e seus componentes Como introduzido no Capítulo 3, o ambiente de computação possui 5 módulos e os componentes desenvolvidos para cada módulo são: • Módulo de Comunicação: Interface com o usuário; • Módulo de Acompanhamento: O professor e aluno acompanham o resultado e histórico de sua avaliação continuada, ambos visualizam e atualizam NACs, assim como o professor visualiza a classificação do aluno; 40 • Módulo do Aprendiz: Armazena o NAC atual do aluno, bem como seu histórico de desempenho; • Módulo de Avaliação: Armazena exercícios, que neste trabalho são considerados unidades de avaliação e são relacionados com os conceitos armazenados no módulo de conhecimento. Através da unidade de avaliação, o NAC do aluno é atribuído e armazenado no módulo de acompanhamento. • Módulo de Administração: Administrador e professor têm acesso ao gerenciamento da ontologia, alunos e exercícios e; • Módulo de Conhecimento: Domínio da Ontologia e visualização de Mapas Conceituais. O armazenamento lógico do ACAvA e cada um de seus módulos é discutido na seção seguinte. 5.3 Tecnologias Utilizadas O sistema ACAvA é composto pelas seguintes tecnologias: • Arquitetura do Sistema O ambiente ACAvA deverá usar a arquitetura computacional cliente/servidor. Essa arquitetura é baseada em sistemas clientes, que solicitam serviços, comunicando-se por uma rede através do protocolo de comunicação http com sistemas servidores, que oferecem serviços (MÉNDEZ, 1997). A arquitetura do sistema integrará várias tecnologias, a saber: a. Web Browser – É uma interface hipermídia que se comunica com o servidor através do protocolo http, para acessar recursos localizados no computador servidor. O computador servidor será o hospedeiro do cliente do sistema. b. Protocolo de comunicação http – É um protocolo de comunicação, capaz de transmitir qualquer tipo de informação e fazer a comunicação do cliente com o servidor. c. Servidor Web – É uma aplicação que fica sendo executada no computador servidor e atende aos pedidos dos clientes por documentos armazenados no sistema de arquivos da plataforma onde se encontra instalado. Desempenhará a função de servidor do sistema (CUNHA, 2002). 41 A Figura 5.5 apresenta uma visão geral da arquitetura em camadas do sistema. O usuário acessa o sistema remotamente pelo browser, bastando uma conexão com a rede específica a que o ambiente está hospedado. Ao executar qualquer comando, a ação será enviada ao servidor e será interpretada. O sistema desenvolvido foi armazenado em um servidor Apache (APACHE, 2007), cujo sistema operacional é Linux. O banco de dados consiste em uma base acessada remotamente no qual são armazenados dados essenciais ao sistema: ontologias, NACs, exercícios, entre outros. Figura 5.5 - Visão Geral da Arquitetura do Sistema • Linguagem de Programação O sistema foi implementado em linguagem php (PHP, 2006), versão PHP-4, de forma que pode ser executado em qualquer browser e por vários usuários simultaneamente. • Banco de Dados O Banco de dados utilizado no desenvolvimento da aplicação denomina-se PostgreSQL (POSTGREESQL, 2007), e possui as seguintes características: 42 a) É um software open-source, isto é, sua utilização é gratuita e seu download pode ser livremente realizado em seu site; b) Permite executar SQL Statements; c) Possui todas as ferramentas necessárias para a manipulação de banco de dados, como transações, inclusão de novos bancos de dados, usuários e ferramentas; d) Pode ser executado na grande maioria de ambientes operacionais. O banco de dados, PostgreeSQL é relacional e abriga o modelo conceitual de dados, que será tratado na seção a seguir. 5.4 Modelo Conceitual de Dados Por questões de cunho pragmático, o orientação a objetos utilizada na construção da ontologia foi mapeada em um modelo entidade-relacionamento. Por se tratarem de paradigmas distintos, a estrutura da ontologia deve ser modificada de forma que fique coerente com o modelo entidade-relacionamento. Por sua grande aceitação, sendo o mais utilizado em situações práticas, segundo Pezza (2004), o modelo entidade-relacionamento foi escolhido para ser utilizado no desenvolvimento do banco de dados proposto neste projeto. O modelo lógico entidade-relacionamento tem por base a percepção do mundo real como um conjunto de objetos básicos, chamados entidades e do relacionamento entre eles (SILBERCHATZ e SUDARSHAN, 1999). Uma entidade pode ser um aluno, uma disciplina, um conceito. A Figura 5.6 mostra uma visão geral de todas as tabelas, através do diagrama de entidade-relacionamento, desenvolvido na fase de design lógico, que ilustra relação entre as entidades e chaves primárias. Devido à necessidade de se chegar à terceira forma normal, uma série de novas entidades passaram a fazer parte do modelo. As entidades que fazem parte do modelo são: • Aluno • Conceito • Curso • Disciplina 43 • Exercicio • Usuario Além das entidades acima, o modelo de dados também possui os seguintes relacionamentos: • AlunoConceito • AlunoCurso • ConceitoDependencia • CursoDisciplina • DisciplinaConceito • ExercicioConceito Figura 5.6 - Entidades e relacionamentos do banco de dados utilizado no aplicativo As tabelas Disciplina, Conceitos, ConceitoDependencia e DisciplinaConceito armazenam todos os conceitos de cada disciplina e seu relacionamento. A partir de cada 44 disciplina, é possível saber quais os conceitos ensinados e a partir desses, quais os outros conceitos relacionados. Figura 5.7 - Diagrama entidade-relacionamento para conceitos (PEZZA, 2004, modificada) A Figura 5.7 mostra como é feito relacionamento entre conceitos. A cardinalidade 0,N que relaciona a entidade Conceito entre si mostra que um conceito pode ter um ou mais conceitos subordinados a ele (PEZZA, 2004). A modelagem relacional demonstrada é à base de um sistema para o acompanhamento do nível de conhecimento dos alunos no decorrer de um curso. A base conceitual de dados desenvolvida permite uma visualização completa do curso. Todas as informações foram migradas do Protege, como visto na Seção 4.2, através de rotinas que estruturam os dados para compor as tabelas da base de dados. Além da modelagem conceitual do banco de dados, outra modelagem fundamental para o desenvolvimento de um sistema é a UML, que será discutida na seção a seguir. 5.5 Modelagem UML Para uma melhor visualização do ambiente proposto, foi realizada uma modelagem baseada no padrão UML (Unified Modeling Language). A modelagem UML é apresentada neste capítulo em forma de diagramas de classes, na seção 5.5.1, e diagrama de casos de usos, na seção 5.5.2. No Apêndice A, algumas especificações de caso de usos foram escolhidas como exemplo para exibição e sobre as mesmas especificações foram desenvolvidas os seus diagramas de seqüência, que são expostos no Apêndice B. 5.5.1. Diagrama de Caso de Uso Esta seção apresenta o diagrama de caso de uso do sistema. O padrão UML fornece o diagrama denominado Caso de Uso. Este diagrama caracteriza-se por ter a capacidade de 45 passar uma visão geral do ambiente de uma forma intuitiva e de fácil leitura, onde as pessoas leigas podem interpretá-los e entender o ambiente como um todo (NETO, 2000). Um diagrama de caso de uso ilustra como o software será utilizado e por quem. O diagrama, mostrado na Figura 5.8 foi desenvolvido na fase de análise de requisitos. Os usuários do sistema podem ser divididos em professores e alunos. Cada um possui papéis distintos na utilização do sistema, e executam ações. Figura 5.8 - Diagrama de casos de uso 46 Cada caso de uso será brevemente descrito, divididos por tipo de atores. a) Professor As atribuições do professor são as que aparecem na Figura 5.9 Figura 5.9 - Casos de Uso do Ator Professor • Cadastrar Conceitos: Cadastra conceitos dentro do curso em que o usuário se encontra associado e os associa com disciplinas. A partir deste caso de uso, no 47 futuro, não serão necessárias integrações com o software Protegé para a atualização da ontologia. • Editar Conceitos: Edita conceitos e suas relações de dependência; • Excluir Conceitos: Exclui os conceitos e todas suas relações de dependência; • Cadastrar Disciplinas: Cadastra disciplinas dentro do curso em que o usuário se encontra cadastrado; • Editar Disciplinas: Edita disciplinas e suas relações de dependência; • Excluir Disciplinas: Exclui disciplinas e suas relações de dependência; • Cadastrar Cursos: Cadastra um curso; • Editar Cursos: Edita um curso; • Excluir Cursos: Exclui um curso e todas suas relações de dependência; • Cadastrar Alunos: Cadastra um aluno e o associa a um curso; • Editar Alunos: Edita um aluno e todas as suas relações de dependência; • Excluir Alunos: Exclui um aluno e todas suas relações de dependência; • Cadastrar Exercícios: Cadastra exercícios e associa os conceitos referentes a ele. Para cadastrar um exercício, todos os conceitos relacionados à ele, devem ser escolhidos. Desta forma, quando o mesmo for resolvido, o NAC do aluno será atualizado. O procedimento é visualizado na Figura 5.10; • Editar Exercícios: Edita um exercício e todas suas relações de dependência; • Excluir Exercícios: Exclui um exercício e todas suas relações de dependência; • Login: O usuário inicia o sistema e de acordo com seu perfil, são definidas as variáveis de sessão do sistema; • Visualizar NAC: Os usuários conseguem visualizar os NACs de um aluno referente os conceitos das disciplinas selecionada; • Atualizar NAC: O professor atualiza o NAC de um conceito para um aluno; • Visualizar Mapas Conceituais dos Conceitos: Ao selecionar um conceito, seu mapa conceitual é criado e disponibilizado em um arquivo de texto para download. Este arquivo é compatível com o software Cmap Tools (2006), que gerencia conteúdo de mapas conceituais; 48 • Visualizar Mapas Conceituais das Disciplinas: Ao selecionar uma disciplina, o mapa conceitual dos seus conceitos é criado e disponibilizado em um arquivo de texto para download. Este arquivo é compatível com o software Cmap Tools (2006), que gerencia conteúdo de mapas conceituais; • Visualizar Ontologia por Disciplina: Ao selecionar uma disciplina, visualiza-se o conteúdo do domínio da mesma e; • Visualizar Ontologia por Conceito - É importante que o professor tenha acesso a toda estrutura de conceitos e disciplinas, para no caso de um plano de mudanças de currículo. Dessa forma, caso precise alterar uma disciplina da grade por qualquer motivo, conseguirá visualizar os pré-conceitos que aquela disciplina tem com relação a outras, não permitindo assim, lacunas na aprendizagem significativa dos alunos Figura 5.10 - ACAvA - Funcionalidade de cadastramento de exercícios 49 b) Administrador Dentro das ações que o professor desempenha, algumas também podem ser realizadas pelo administrador, a fim de ajudar o professor, sempre que possível. A Figura 5.11 mostra as atividades do administrador. Figura 5.11 - Casos de Uso do Ator Administrador c) Aluno As seguintes ações são realizadas pelos alunos, de acordo com a Figura 5.12: Figura 5.12 - Casos de Uso do Ator Aluno 50 O caso de uso, Realizar Exercícios, funciona da seguinte maneira: de acordo com seu NAC no momento da ação relacionado a diversos conceitos, irá visualizar os exercícios referentes ao seu perfil para resolução e atualização do NAC. Para isso, a aplicação avalia através de métodos de buscas em mapas conceituais da aprendizagem significativa, qual o conceito mais específico que o aluno não possui e incentiva o aluno a fazer o exercício desse tópico. Para os alunos, a reflexão sobre seu próprio conhecimento é muito importante em qualquer situação de aprendizagem, indispensável para os que pretendem se aprimorar no próprio ato de aprender. Para todos os casos de uso citado acima e exibidos no diagrama de caso de uso, foi feita uma especificação de caso de uso, onde cada etapa da atividade é descrita com detalhamento. Algumas destas especificações são demonstradas no Apêndice A. Também para cada especificação foi desenvolvido um diagrama de seqüência, a fim de facilitar o relacionamento de cada método criado e suas classes. Alguns destes diagramas estão disponíveis no Apêndice B. O diagrama de classes é discutido na seção a seguir. 5.5.2. Diagrama de Classes A Figura 5.13 exibe o diagrama de classes UML, que sumariza todas as relações entre classes, variáveis definidas e métodos necessários, mostrando a divisão em camadas do sistema, ressaltando a camada de dados, modificada a partir do diagrama de classes da Figura 4.7 (introduzida no Capítulo 4) de modo a incorporar elementos sistêmicos como autenticação. Este diagrama de classe foi desenvolvido na fase de análise de desenvolvimento do sistema. Classe a classe será detalhada nesta seção do trabalho, utilizando a classe na fase de design, onde os parâmetros de entrada e de saída das funções são exibidos. Não serão consideradas para a criação de classes, datas de manipulação de instância, como cadastro, edição e exclusão, porém, todas estas datas estão armazenadas no banco de dados, para controle de uso e auditoria. 51 Usuario -loginUsuario : string -senhaUsuario : string -privilegioUsuario : string -cursoUsuario : int +autenticaUsuario() +getUsuarioCurso() Curso AlunoCurso Aluno -IDCurso : int -nomeCurso : string +setCurso() +getCurso() +updateCurso() +deleteCurso() +getListaCurso() -idAluno : int -idCurso : int +setAlunoCurso() +getAlunoCurso() +updateAlunoCurso() +deleteAlunoCurso() +getListaAlunoCurso() -IDAluno : int -nomeAluno : string +setAluno() +getAluno() +updateAluno() +deleteAluno() +getListaAluno() 1 * * 1 1 * 1 * AlunoConceito -idAluno : int -idConceito : int -NAC : int -dataNAC +AlunoConceito() +setNAC() +getNAC() +updateNAC() +deleteNAC() +getConceitoMaisEspecificoComMenorNAC() +getNACGeralAluno() +getNACAlunoPorMes() CursoDisciplina -IDCurso : int -IDDisciplina : string +setCursoDisciplina() +getDisciplinaCurso() +updateCursoDisciplina() +deleteCursoDisciplina() +getListaCursoDisciplina() +getCursoDisciplina() * 1 Disciplina -idDisciplina : int -nomeDisciplina : string -etapaDisciplina : string +setDisciplina() +getDisciplina() +updateDisciplina() +deleteDisciplina() +getListaDisciplina() 1 * ConceitoDisciplina Conceito -IDConceito : int -IDDisciplina : int +setConceitoDisciplina() +getConceitoDisciplina() +getConceitoDisciplina() +updateConceitoDisciplina() +deleteConceitoDisciplina() -IDConceito : int -nomeConceito : string +setConceito() +getConceito() +updateConceito() +deleteConceito() +getListaConceito() * 1 ConceitoDependencia 1 * -IDConceitoPai : int -IDConceitoFilho : int +setConceitoDependencia() +getConceitoDependencia() +getConceitoDependencia() +updateConceitoDependencia() +deleteConceitoDependencia() +getConceitoDependenciaParaMapaConceitual() 1 * ConceitoExercicio Screen Controller +CorrigeExercicio() +RegraNACExercicio() +ClusterizaAlunos() +exibeMensagem() -idConceito : int -idExercicio : int +ConceitoExercicio() +setConceitoExercicio() +getConceitoExercicio() +getConceitoExercicio() +updateConceitoExercicio() +deleteConceitoExercicio() * 1 Exercicio -idExercicio : int -enunciadoExercicio : string -RespostaAExercicio : char -RespostaBExercicio : char -RespostaCExercicio : char -RespostaDExercicio : char -RespostaEExercicio : char -RespostaCorretaExercicio : char +Exercicio() +setExercicios() +getExercicios() +updateExercicio() +deleteExercicio() +getListaExercicio() Figura 5.13 - Diagrama de classes do Sistema 52 A Tabela 5.2 mostra a classe Conceito na fase de design do diagrama de classes da modelagem UML. Esta classe possui os atributos e métodos referentes aos conceitos, que é uma das base de domínio da formação da ontologia. Tabela 5.2 - Atributos e Métodos da classe Conceito Atributos e Métodos Descrição iDConceito: int Identificador do conceito nomeConceito: string Indica o nome do conceito Conceito() Construtor da classe setConceito(nomeConceito) Cadastra um conceito getConceito(idConceito) Retorna o nome do conceito. updateConceito(idConceito: nomeConceito: String) deleteConceito(idConceito) getListaConceitos() int, Atualiza os dados de um conceito. Exclui os dados de um conceito Retorna todos os nomes e identificadores de conceitos cadastrados no banco. A Tabela 5.2 mostra a classe ConceitoDependencia na fase de design do diagrama de classes da modelagem UML. Esta classe possui os atributos e métodos referentes ao relacionamento entre conceitos, e identifica a relação pré-requisito/pós-requisito para um conceito. Tabela 5.3 - Atributos e Métodos da Classe ConceitoDependencia 53 Atributos e Métodos Descrição idConceitoPai: int Primeiro conceito que será associado a outro. Nesta relação entre dois conceitos, o conceito significa um pós-conceito para o outro conceito relacionado. idConceitoFilho: int Segundo conceito a ser associado a outro. Nesta relação entre dois conceitos, o conceito significa um pré-conceito para o outro conceito relacionado. ConceitoDependencia() Construtor da classe setConceitoDependencia(idConceito, Insere na tabela relacional um conceito e seu idConceitoDependente, relacao) conceito dependente. A variável relação na codificação é fixa e indica pré-requisito ou pósrequisito. É utilizada porque este mesmo método é utilizado para cadastrar pré-conceitos e pós- conceitos para um determinado conceito. Este método é chamado sempre que existir uma inclusão de relação entre conceitos. getConceitoDependenciaPai(int Dado o id do conceito pai (pós- requisitos), retorna idConceitoPai) todos os conceitos que são filhos (pré-requisitos) para este conceito. getConceitoDependenciaFilho(int Dado o id do conceito filho (pré-requisitos), idConceitoFilho) retorna todos os conceitos que são pais (pósrequisitos) para este conceito. updateConceitoDependencia(int Atualiza no banco de dados a relação entre dois idConceitoPai, int idConceitoFilho) conceitos deleteConceitoDependencia(int Apaga do banco de dados a relação entre dois idConceito) conceitos getConceitoDependenciaParaMapaConceit Dado um conceito Pai (conceito que será pós- ual(int idConceitoPai) requisito para outros), retorna o Mapa Conceitual desse Conceito em até 2 camadas de hierarquia. A Tabela 5.4 mostra a classe ConceitoDisciplina na fase de design do diagrama de classes da modelagem UML. Esta classe possui os atributos e métodos referentes ao relacionamento entre um conceito e uma disciplina. 54 Tabela 5.4 - Atributos e Métodos da classe ConceitoDisciplina Atributos e Métodos Descrição idConceito:int Identificador do conceito idDisciplina: int Identificador da Disciplina ConceitoDisciplina() Construtor da classe setConceitoDisciplina(idConceito, Insere no banco o conceito e sua disciplina relacionada. idDisciplina) Caso um mesmo conceito seja ensinado em mais de uma disciplina, este método é chamado de acordo com a quantidade de disciplinas relacionadas a este conceito. getConceitoDisciplina(idDisciplina) Retorna todos os conceitos todas as disciplinas, de uma determinada disciplina. getDisciplinaConceito(idConceito) Retorna relacionadas a um determinado conceito. updateConceitoDisciplina() Atualiza a relação entre um conceito e uma disciplina. deleteConceitoDisciplina() Apaga a relação entre um conceito e uma disciplina. A Tabela 5.5 mostra a classe ConceitoExercicio na fase de design do diagrama de classes da modelagem UML. Esta classe é responsável por atribuir vários conceitos a um exercício. Tabela 5.5 - Atributos e Métodos da classe ConceitoExercicio Atributos e Métodos Descrição iDConceito: int Identificador do Conceito 55 iDExercicio: int Identificador do Exercicio ConceitoExercicio() Construtor da classe setConceitoExercicio() Cadastra no banco de dados uma relação entre conceito e exercício. getConceitoExercicio(int Retorna do banco de dados todos os conceitos relacionado idExercicio) a um exercício, dado seu identificador. getExercicioConceito(int Retorna do banco de dados todos os exercícios relacionado idConceito) a um conceito, dado seu identificador. updateConceitoExercicio() Atualiza no banco de dados a relação entre conceito e exercício. deleteConceitoExercicio() Apaga do banco de dados a relação entre conceito e exercício. A Tabela 5.6 mostra a classe AlunoConceito na fase de design do diagrama de classes da modelagem UML. Esta classe é responsável por relacionar um conceito com seu nível de aquisição de um aluno. Tabela 5.6 - Atributos e Métodos da classe AlunoConceito Atributos e Métodos Descrição idAluno:int Identificador do aluno. idConceito: int Identificador do conceito. NAC:int Valor de 0 a 10 referentes ao nível de aquisição do conhecimento do aprendiz de um conceito em um determinado momento. dataNAC:date Data da inclusão do NAC no banco de dados. AlunoConceito() Construtor da classe 56 setNAC() Cadastra o NAC de um aluno, ou seja a relação entre aluno e conceito em um determinado momento. getNAC(idAluno, idConceito) Retorna o NAC de um aluno updateNAC(idAluno, idConceito, NAC) Atualiza o NAC de um aluno getConceitoMaisEspecificoComMenorNAC() Retorna o conceito mais específico com menor NAC getNACGeralAluno() Retorna a soma de todos os NACs dos alunos divididos pelos números de conceitos ensinados. Os conceitos ensinado devem ter pelo menos NAC >= 0, não podendo ser NULL getNACAlunoPorMes Retorna a soma de todos os NACs dos alunos divididos pelos números de conceitos ensinados em um determinado mês. A Tabela 5.7 mostra a classe Disciplina na fase de design do diagrama de classes da modelagem UML. Esta classe é responsável por manipular atributos e métodos de uma disciplina. Tabela 5.7 - Atributos e Métodos da classe Disciplina Atributos e Métodos Descrição idDisciplina:int Identificador da Disciplina nomeDisciplina:string Nome da Disciplina etapaDisciplina:string Etapa em que a Disciplina é lecionada dentro do Curso Disciplina() Construtor da classe. setDisciplina(nomeDisciplina Cadastra uma disciplina. , etapaDisciplina) getDisciplina(idDisciplina) Retorna os dados de uma disciplina. updateDisciplina() Atualiza os dados de uma disciplina, dado seu identificador. deleteDisciplina() Apaga os dados de uma disciplina, dado seu identificador. 57 getListaDisciplina() Retorna uma lista com todas as disciplinas cadastradas em um banco de dados. A Tabela 5.8 mostra a classe CursoDisciplina na fase de design do diagrama de classes da modelagem UML. Esta classe é responsável por relacionar um curso a uma disciplina. Tabela 5.8 - Atributos e Métodos da classe CursoDisciplina Atributos e Métodos Descrição idCurso: int Identificador do Curso idDisciplina Identificador da Disciplina CursoDisciplina() Construtor da classe setCursoDisciplina(idCurso, Cadastra o relacionamento curso-disciplina. idDisciplina) getDisciplinaCurso(id Curso) Retorna a disciplina a que o curso pertence, dado o identificador do curso. getCursoDisciplina(id Disciplina) Retorna o curso a que a disciplina pertence, dado o identificador da disciplina. updateCursoDisciplina() Atualiza a relação entre curso e disciplina deleteCursoDisciplina() Apaga a relação entre curso e disciplina A Tabela 5.9 mostra a classe Curso na fase de design do diagrama de classes da modelagem UML. Esta classe é responsável por manipular atributos e métodos de um curso. Tabela 5.9 - Atributos e Métodos da classe Curso 58 Atributos e Métodos Descrição idCurso:int Identificador do curso nomeCurso:string Nome do curso Curso() Construtor da classe setCurso() Cadastra um curso no banco de dados getCurso(idCurso) Retorna os dados de um curso do banco de dados dado o seu identificador updateCurso(idCurso) Atualiza os dados do curso, dado seu identificador deleteCurso(idCurso) Apaga os dados do curso, dado seu identificador getListaCurso() Retorna a lista de todos os cursos cadastrados. A Tabela 5.10 mostra a classe AlunoCurso na fase de design do diagrama de classes da modelagem UML. Esta classe é responsável por relacionar um aluno a um curso. Tabela 5.10 - Atributos e Métodos da classe AlunoCurso Atributos e Métodos Descrição idAluno:int Identificador do aluno idCurso:int Identificador do curso AlunoCurso() Construtor da classe setAlunoCurso() Cadastra uma relação de Aluno e Curso no banco getAlunoCurso(idCurso) Retorna os alunos matriculados em um curso. getCursoAluno(idAluno) Retorna o curso de um Aluno, dado seu identificador. updateAlunoCurso() Atualiza a relacao entre Aluno e Curso. deleteAlunoCurso() Apaga a relacao entre Aluno e Curso. A Tabela 5.11 mostra a classe Aluno na fase de design do diagrama de classes da modelagem UML. Esta classe é responsável por manipular atributos e métodos do aluno de um curso. 59 Tabela 5.11 - Atributos e Métodos da classe Aluno Atributos e Métodos Descrição idAluno:int Identificador do aluno nomeAluno:string Nome do aluno Aluno() Construtor da classe setAluno() Cadastra aluno no banco de dados getAluno(idAluno) Retorna o nome do aluno updateAluno() Atualiza os dados do aluno no banco de dados deleteAluno() Apaga os dados do aluno no banco de dados getListaAluno() Retorna uma lista com todos os alunos cadastrados no banco de dados. A Tabela 5.12 mostra a classe Usuario na fase de design do diagrama de classes da modelagem UML. Esta classe é responsável por manipular atributos e métodos de um usuário. Tabela 5.12 - Atributos e Métodos da classe Usuario Atributos e Métodos Descrição loginUsuario:string Login do usuário. senhaUsuario:string Senha do usuário. cursoUsuario:int Identifica o id do curso dos professores e administradores. É utilizado apenas pelos usuários administradores professores. privilegioUsuario:string Identifica se o usuario e aluno, professor ou administrador. e 60 Usuario() Construtor da classe autenticaUsuario(loginUsuario, Indica o privilégio do usuário, que pode ser professor, aluno senhaUsuario) ou administrador. getUsuarioCurso(loginUsuario) Retorna o idCurso ao que o administrador, professor ou auno pertence. A Tabela 5.13 mostra a classe Exercicio na fase de design do diagrama de classes da modelagem UML. Esta classe deve conter um enunciado em forma de texto e cinco respostas diferentes, quatro falsas e uma correta, que serão dispostas em forma de alternativas para o aluno. O professor deve apenas indicar a alternativa correta, comporta os seguintes métodos relacionados: Tabela 5.13 - Atributos da classe Exercicio Atributos e Métodos Descrição idExercicio:int Identificador do exercício. enunciadoExercicio:string Enunciado do exercício. respostaAExercicio:char Resposta do exercício: alternativa A. respostaBExercicio:char Resposta do exercício: alternativa B. respostaCExercicio:char Resposta do exercício: alternativa C. respostaDExercicio:char Resposta do exercício: alternativa D. respostaEExercicio:char Resposta do exercício: alternativa E. respostaCorretaExercicio:char Resposta correta do exercício. Exercício() Construtor da classe setExercicio() Cadastra um exercício. getExercicio(idExercicio) Retorna os dados de um exercício, dado deu identificador. deleteExercicio() Apaga um exercício. 61 updateExercicio() Atualiza os dados de um exercício. getListaExercicio() Retorna uma lista com todos os exercícios cadastrados no banco. A Figura 5.14 mostra a classe Screen, que é criada durante a fase de design da modelagem UML do digrama de classes. É responsável por exibir todos os dados no browser dos usuários, e seus atributos e métodos serão abstraídos neste trabalho. Figura 5.14 - Classe Screen A Tabela 5.14 mostra a classe Controller, criada na fase de análise da modelagem UML, que serve de ligação entre a classe Screen e o resto do sistema. Comporta os seguintes métodos relacionados. Tabela 5.14 - Atributos da classe Controller Atributos Descrição CorrigeExercicio() O sistema compara a resposta indicada pelo aluno com resposta correta indicada pelo professor. RegraNACExercicio() Define a regra de NAC para um exercício, caso o aluno tenha acertado a questão, à todos os conceitos relacionados ao exercício, é atribuído o NAC 10. Caso contrário, o valor atribuído será 0. ClusterizaAlunos() Baseado na regra de classificação descrita na seção 5.3, os alunos são exibidos em uma lista onde é fácil diferenciar o nível de aprendizado de cada aluno. exibeMensagem() Retorna a mensagem da operação concluída ou mensagem de erro. 62 Nesta seção foram apresentados os diagramas UML utilizados para o desenvolvimento do ACAvA. As conclusões desta dissertação e a proposta de trabalhos futuros são apontados no capítulo a seguir. 63 6 Conclusões Finais Partindo do princípio em que a visão contemporânea da aprendizagem fundamenta- se na construção de novos conhecimentos e compreensões baseados no que o aprendiz já conhece e acredita, os professores precisam estar atentos às lacunas de conceitos que os estudantes trazem sobre a matéria. Se os conceitos iniciais dos estudantes são ignorados, as compreensões que eles desenvolvem podem ser muito diferentes das que os professores pretendem. Neste trabalho foi desenvolvido um sistema de acompanhamento do nível de aquisição dos conhecimentos dos alunos, frente aos conceitos ensinados em um curso. Para tanto foi necessário modelar e representar o conteúdo educacional do Curso de graduação de Ciência da Computação da Universidade Presbiteriana Mackenzie, através de sua ontologia, que serviu como base conceitual para o desenvolvimento do sistema. Este sistema, foi denominado ACAvA e auxilia o professor a manipular a ontologia desenvolvida, criar novas ontologias e gerenciar conhecimentos. No ACAvA, o histórico dos alunos no curso ficam armazenados na base conceitual e servem de apoio para o professor identificar ao longo do tempo se existem conceitos a serem melhor trabalhados e quais os conceitos são necessários, através da aprendizagem significativa, para afixá-lo na estrutura cognitiva do aprendiz. Como contribuição adicional deste trabalho, as seguintes perguntas de pesquisa feitas na introdução agora podem ser respondidas. A avaliação continuada auxilia o professor, através do seu histórico a visualizar como foi o aprendizado dos alunos, dados os conceitos ensinados. Com o ACAvA, o professor pode alterar a cada turma a estrutura conceitual do curso e verificar se esta estrutura é coerente com a aprendizagem significativa. Ou seja, se através desta estrutura os alunos tiveram melhor ou menor desempenho. 64 Para o professor conhecer o estado de conhecimento dos estudantes, o ACAvA gerencia os NACs de forma a prover auxílio para uma educação continuada. O ACAvA foi modelado de forma a atender qualquer curso de graduação, através de uma simples ontologia. Esta ontologia, também pode ser utilizada em outros sistemas que utilizem esta mesma tecnologia. 6.1 Trabalhos Futuros Considerando as lacunas do ACAvA e seu potencial de crescimento, algumas sugestões para trabalhos futuros são apresentadas a seguir: • Integração do sistema com a base de dados do software Protegé, que armazena o domínio da ontologia, com a base de dados relacional, que armazena o domínio do conhecimento do aluno; • Desenvolvimento do algoritmo de clusterização, a fim do professor não intervir nas técnicas de agrupamento, para agrupamento e classificação dos alunos, por seu nível de conhecimento; • Melhora na interface gráfica do sistema e possibilidade de geração de relatórios e; • Considera-se o estudo e desenvolvimento para outras aplicações do modelo, como por exemplo sua utilização em empresas para adequação de funções e cargos, onde os conceitos seriam competências e seu nível de habilidade em uma competência, seu NAC. 65 Referências APACHE. The Apache Software Fundation. Disponível em < http://www.apache.org/>. Acesso em 11 maio 2007. AUSUBEL, D. P. Educational Psycology: A conitive view. Holt, Rinehart and Winston Inc., New York, 1968. AUSUBEL, David; HANESIAN, Helen. Psicologia Educacional. Rio de Janeiro. Interamericana. 1980. BOULAY, J. Benedict H. du. Some Difficulties of Learning to Program. In: Journal of Education Computing Research. 1986. BRANSFORD, A. L. Brown. How people learn: Brain, Mind, Experience and School: Expanded Edition. National Academy Press, Washington, D.C. National Research Council. 2003. CMAP TOOLS. Knowledge Modeling Kit. Disponível em:< http://cmap.ihmc.us/>. Acesso em 11/07/2006. 2006. CUCCHIARELLI, A.; PANTI, M.; VALENTI, S. Web-based assessment in student learning. University of Ancona. Ancona. 2000. CUNHA, Marcos José Silva e. AC3As-Web: Ambiente Cooperativo de Apoio à Avaliação de Aprendizagem Significativa na Web. Dissertação de Mestrado. Instituto Tecnológico de Aeronáutica. São José dos Campos. 2002. DUINEVELD, A. J.; STOTER, R.; WEIDEN, M. R.; KENEPA, B.; BENJAMINS, V. R: Wondertools? A comparative study of ontological engineering tools. Proceedings of the 12th Workshop on Knowledge Acquisition, Modeling and Management (KAW’99). Canada, 1999. FRANÇA, Vilma Fernandes de. Avaliação Contínua da Aprendizagem: Um estudo de caso em Curso de Graduação. Tese de Mestrado. Instituto Tecnológico de Aeronáutica. São José dos Campos. 2004. 66 FREITAS, Juliana Gonçalvez de. Uma ferramenta de perfis de usuários baseada em dados qualitativos. Trabalho de Conclusão de Curso. Universidade do Vale do Rio dos Sinos. 2005. GAGNÉ, Robert M. Como se realize a aprendizagem. Ao livro técnico S.A. 1973. GAGNÉ, Robert M.; BRIGGS, Leslie J. Wager; WALTER W. Principles of Instructional Design. Fort Worth, Harcout Brace & Company. 1992. GREENBERG, Leonard. LMS and LCMS: What’s the difference? Learning Circuits. ASTD’s Source for e-learning. 2002. GRUBER, T. R. A Translation Approach to Portable Ontology Specification. 1993. GUERRA, J. H. L. Utilização do computador no processo de ensino aprendizagem: uma aplicação em planejamento e controle da produção. Dissertação de Mestrado. Escola de Engenharia de São Paulo. 2000. GUIZZARDI, G. 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. HAMZE, Amélia. O que é a aprendizagem. Brasil Escola. Disponível em <http://www.brasilescola.com/pedagogia/o-que-e-aprendizagem.htm>. Acesso em 16/01/2007. KEMERY, E. R. Developing on-line Colaboration. University of Baltimore. Baltimore. 2000. KOHONEN, T. Self-Organing Maps. Berlin: Springer-Verlag, 2001. KOMOSINSK, L. J.; LACERDA, C. D. de Freitas de; FALQUETO, J. Uso de agentes para apoio à medição de diálogos entre estudantes via internet. Anais do V Congresso Iberamericano de Informática na Educação. Viña del Mar, 2000. KURNIA, A.; LIN, A. e CHEANG B. Online Judge. Computer & Education, v. 36. LEITE, A. de Sá. 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. 1999. MaCQUEEN, J. B. Some Methods for classification and Analysis of Multivariate Observation. Proceedings of 5th Berkley Symporium on Mathematical Statitics and Probability, Berkley, University of California. Press, 1:281-297. 1967. 67 MANSINI, Elcie F. S. Psicopedagogia na escola: buscando condições para a aprendizagem significativa. São Paulo. Unimarco. 1993. MARIETTO, M. G. B. Definição dinâmicas de estratégias instrucionais em sistemas de tutoria inteligente: uma abordagem multiagente em www. Tese de Doutorado. Instituto Tecnológico de Aeronáutica. São José dos Campos. 2000. MASETTO, M. T. Competência Pedagógica Do Professor Universitário. São Paulo: Editora Summus, 2003. MELO, R. M. Teoria de Ausubel. Brasília: UNB,1999. Disponível em: <Http://www.xr.pro.br/Monografias/Ausubel.html >. Acesso em: 23 abr. 2007. MENDÉZ, R. ª Florez. Programming distributed collaboration interation through the world wide web. University of Calgary. 1997. Disponível em: < http://pages.cpsc.ucalgary.ca/~robertof/publications/thesis/>. Acesso em 11 maio 2007. MOREIRA, Marco A.; MANSINI, Elcie F.S. Aprendizagem Significativa: A Teoria de David Ausubel. São Paulo, Centauro.2001. NETO, H. B. Especificando o tele-ambiente no contexto de educação a distância. Simpósio Brasileiro de Informática na Educação.Maceió. 2000. NOVAK, J.D. Learning, Creating and Using Knowleadge: Concept Maps as Facilitative Tools in Schools and Coorporations. Cornell University. 1998. NOVAK, J. D., GOWIN, D. B., Learning how to learn. New York, NY. Cambridge University Press. 1984. [PÉREZ. Gómez-Pérez, A. A survey on ontology tools. OntoWeb Deliverable D1.3. Disponível em < http://www.ontoweb.org/download/deliverables/D13_v1-0.zip > Acesso em 14 mar 2006. 2002. PERRENOUD, Philippe. Dez novas competências para ensinar. Editora ESF. Paris, 1999. PEZZA, André B. Um sistema para integração disciplinar e gestão continuada da aprendizagem. Dissertação de Mestrado. Universidade Presbiteriana Mackenzie.2004. PFAFFMAN. Pfaffman, J.A. Manipulating and Measuring Student Engagement in Computer- Based Instruction. Ph.D. thesis, Vanderbilt University. 2003. PHP. PHP. Disponível em <http://www.php.net>. Acesso em 11 maio 2007. 68 PIMENTEL, Edson Pinheiro. Um Modelo para Avaliação e Acompanhamento Contínuo do Nível de Aquisição de Conhecimentos do Aprendiz. Tese de Doutorado. Instituto Tecnológico de Aeronáutica, São José dos Campos. 2006. PIMENTEL, Edson P.; FRANÇA, Vilma F.; OMAR, Nizam. A caminho de um ambiente de avaliação e acompanhamento contínuo da aprendizagem em Programação de Computadores. III Workshop de Informática na Educação em Computação e Informática do Estado de Minas Gerais, 1(1), p.1-14, 2003. PIMENTEL Edson; FRANÇA, Vilma F.; OMAR, Nizam. A identificação de grupos de aprendizes no ensino presencial utilizando técnicas de clusterização. XIV Simpósio Brasileiro de Informática na Educação. 2003. PIMENTEL, Edson; OMAR Nizam. Um modelo para o mapeamento do conhecimento do estudante em ambientes computacionais de aprendizagem. POSTGREESQL Global Development Group. Disponível em <http://www.postgresql.org/>. Aceso em 24 jan. 2007. THE PROTEGÉ PROJECT. Disponível em <http://protege.stanford.edu/>. Aceso em 05 fev. 2006. REZENDE, S. de O.. Sistemas Inteligentes: Fundamentos e Aplicações. Barueri, SP: Manole, 2003. RODRIGUES, A. P.; GEYER, C. F. R. Agente avaliação de ensino e aprendizagem em EAD. Universidade Federal do Rio Grande do Sul, 2000. Disponível em: < http://www.inf.ufrgs.br/pos/SemanaAcademica/Semana2000/AlessandraRodrigues/ >. Acesso em: 23 abr. 2007. SANTOS, Eduardo Toledo; BARROS, Leilane Nunes de; VALENTE, Vânia Cristina Pires Nogueira. Projetando uma Ontologia de Geometria Descritiva. 15° Simpósio Nacional de Geometria Descritiva e Desenho Técnico. São Paulo. 2001. SBC. Sociedade Brasileira de Computação. Currículo de referência da SBC para cursos de graduação em Computação e Informática. 1999. SILBERCHATZ. Korth, H.F; SUDARSHAN, S. Sistemas de Bancos de Dados. 3ª Edição. São Paulo: Makron Books. 1999. 69 SILVA, Vagner. ACMC-MACK – Ambiente Cooperativo para aprendizagem significativa com mapas conceituais. Universidade Presbiteriana Mackenzie. Tese de Mestrado. São Paulo. 2004. SILVA, Cassiana Fagundes da; VIEIRA Renata. Avaliação e Seleção de atributos para clusterização de documentos. São Leopoldo – RS: 2003. Disponível em: <http://www.inf.unisinos.br/~renata/labor/Apresent2003/Poster_Enia.pdf>. Acesso em 20 de dezembro de 2004. SOUZA, T. P. Construção cooperativa de hipermídia educacional para a web. UFRJ. Rio de Janeiro. 1999. TRENTIN, M. A. Utilização de um ambiente remoto de avaliação no auxílio ao aprendizado. Universidade de Passo Fundo. Passo Fundo. 1999. WENGER. Artificial Intelligence and Tutoring Systems. Morgan. 1986. 70 Apêndice A – Especificações de Caso de Uso O detalhamento do diagrama de caso de uso, apresentado no Capítulo 5, é chamado de especificações de caso de uso. As tabelas abaixo, exibem algumas destas especificações utilizadas no desenvolvimento do ACAvA. Tabela A.1 - Especificação de Caso de Uso: Cadastrar Conceito Nome do Caso de Uso Overflow Cadastrar Conceitos Este caso de uso é ativado pelo professor autorizado a utilizar o Sistema. O ator cadastra novos conceitos de acordo com a inclusão de novas matérias no curso e atribui informações pertinentes ao conceito. Eventflow Fluxo Básico: 1. O sistema reconhece o curso do autor. 2. O sistema retorna as disciplinas do curso. 3. O sistema retorna os conceitos das disciplinas do curso. 4. O ator indica o nome do conceito. 5. O ator seleciona os pré-conceitos necessários para aprender o conceito que está sendo cadastrado. 6. O ator seleciona os pós-conceitos que utilizam este conceito como base de sua aprendizagem. 7. O ator seleciona as disciplinas à que este conceito pertence. 8. Os dados são armazenados no banco de dados. 9. Uma mensagem de “Operação Concluída” é exibida para o ator. Fluxo Alternativo: Não possui. Relacionamento Ator: Professor Pré-Condições Para que este caso de uso seja iniciado, o caso de uso Login deve estar completo em seu Fluxo Básico e o privilégio do usuário deve ser professor. Outras Informações 71 Tabela A.2 - Especificação de Caso de Uso: Cadastrar Disciplina Nome do Caso de Uso Overflow Cadastrar Disciplinas Este caso de uso é ativado pelo professor autorizado a utilizar o Sistema. O ator cadastra novas disciplinas de acordo com a alteração da ementa no curso e atribui informações pertinentes a disciplina. Eventflow Fluxo Básico: 1. O sistema reconhece o curso do ator. 2. O autor indica o nome da disciplina. 3. O autor indica a etapa em que a disciplina é lecionada. 4. Os dados são armazenados no banco de dados, nas tabelas Disciplina e CursoDisciplina 5. Uma mensagem de “Operação Concluída” é exibida para o ator. Fluxo Alternativo: Não possui. Relacionamento Pré-Condições Ator: Professor Para que este caso de uso seja iniciado, o caso de uso Login deve estar completo em seu Fluxo Básico e o privilégio do usuário deve ser professor. Outras Informações Tabela A.3 - Especificação de Caso de Uso: Cadastrar Curso Nome do Caso de Uso Overflow Cadastrar Cursos Este caso de uso é ativado pelo professor e pelo administrador autorizados a utilizarem o Sistema. Os atores cadastram novos cursos e atribuem informações pertinentes. Eventflow Fluxo Básico: 1. O ator indica o nome do curso. 2. Os dados são armazenados no banco de dados. 3. Uma mensagem de “Operação Concluída” é exibida para o ator. Fluxo Alternativo: Não possui. Relacionamento Atores: Professor e Administrador Pré-Condições Para que este caso de uso seja iniciado, o caso de uso Login deve estar completo em seu Fluxo Básico e o privilégio do usuário deve ser professor ou administrador. Outras Informações 72 Tabela A.4 - Especificação de Caso de Uso: Cadastrar Alunos Nome do Caso de Uso Overflow Cadastrar Alunos Este caso de uso é ativado pelo professor e pelo administrador autorizados a utilizarem o Sistema. Os atores cadastram novos alunos e atribuem informações pertinentes. Eventflow Fluxo Básico: 1. O ator indica o nome do aluno. 2. O ator seleciona o curso à que o aluno pertence. 3. Os dados são armazenados no banco de dados e o aluno é associado a todos os conceitos do curso, porém o valor dessa associação será NULL.. 4. Uma mensagem de “Operação Concluída” é exibida para o ator. Fluxo Alternativo: Não possui. Relacionamento Pré-Condições Atores: Professor e Administrador Para que este caso de uso seja iniciado, o caso de uso Login deve estar completo em seu Fluxo Básico e o privilégio do usuário deve ser professor ou administrador. Outras Informações Tabela A.5 - Especificacao de Caso de Uso: Login Nome do Caso de Uso Overflow Login Este caso de uso é ativado pelo professor, aluno e administrador antes de utilizar o Sistema. O ator acessa uma tela de login antes de utilizar o sistema. Eventflow Fluxo Básico: 1. O ator indica seu login. 2. O ator indica sua senha. 3. O sistema verifica se o login e a senha estão corretos e retorna o identificador do curso do usuario [A]. 4. O ator exibe ao ator a página principal. Fluxo Alternativo: [A] Se login e senha estiverem incorretos, uma mensagem de erro é exibida na tela. Relacionamento Pré-Condições Outras Informações Atores: Professor, Aluno e Administrador. 73 Tabela A.6 - Especificação de Caso de Uso: Realizar Exercício Nome do Caso de Uso Overflow Realizar Exercícios Este caso de uso é ativado pelo aluno autorizado a utilizar o Sistema. O ator pode realizar um exercício cadastrado no sistema. Eventflow Fluxo Básico: 1. O sistema reconhece as disciplinas do curso. 2. O sistema reconhece os conceitos das disciplinas do curso. 3. O sistema reconhece o nível de conhecimento do aluno para cada conceito. 4. O sistema busca o conceito mais específico com menor nível de NAC. 5. O sistema reconhece um exercício para a regra escolhida de associação de NACs e exercícios[A]. 6. O ator indica a alternativa que achar correta. 7. O sistema verifica a resposta do autor, e atualiza os NACs relativos aos conceitos do exercício de acordo com as regras: Se correta, atribui 10 para todos os NACs, se incorreta, atribui 0 para todos os NACs. 8. O sistema exibe a resposta correta na tela. 9. O sistema permite ao ator voltar para o fluxo 1 e iniciar outro exercício. Fluxo Alternativo: [A] Caso não haja exercícios nesta condição, exibe-se um exercício com data de cadastro mais antigo. Relacionamento Atores: Aluno Casos de Usos: Atualiza NAC Pré-Condições Para que este caso de uso seja iniciado, o caso de uso Login deve estar completo em seu Fluxo Básico e o privilégio do usuário deve ser aluno. Outras Informações 74 Tabela A.7 - Especificação de Caso de Uso: Atualizar NAC Nome do Caso de Uso Overflow Atualizar NAC Este caso de uso é ativado pelo aluno ou professor autorizado a utilizar o Sistema. O ator pode atualizar um NAC cadastrado no sistema. Eventflow Fluxo Básico: 1. O sistema reconhece o curso. 2. O sistema exibe uma lista com todos os alunos do curso na tela. 3. O ator seleciona um aluno. 4. O sistema lista todas as disciplinas do curso na tela. 5. O ator seleciona uma disciplina. 6. O sistema exibe a uma lista com todos os conceitos pertencentes à disciplina e um campo com o NAC atual do aluno em relação a este conceito. 7. O ator indica valores de 0 a 10 para os conceitos que desejar. 8. Os dados referentes ao NAC são armazenados no banco de dados. 9. Uma mensagem de “Operação Concluída” é exibida para o ator. Fluxo Alternativo: Não possui Relacionamento Atores: Aluno ou professor. Casos de Usos: Realiza Exercício Pré-Condições Para que este caso de uso seja iniciado, o caso de uso Login deve estar completo em seu Fluxo Básico e o privilégio do usuário deve ser aluno ou professor. Outras Informações 75 Apêndice B – Diagrama UML de Seqüência O diagrama de seqüência, que ilustra o fluxo de processos de cada caso de uso na fase de design de desenvolvimento de sistemas foi proposto para auxiliar na codificação do sistema e alguns de seus exemplos são apresentados neste apêndice. Figura B.1 - Cadastrar Disciplinas 76 Figura B.2 - Cadastrar Conceitos 77 Figura B.3 - Cadastrar Aluno 78 Figura B.4 - Atualizar NAC 79 Figura B.5 - Cadastrar Curso Figura B.6 - Login 80 Anexo I – Grade Curricular utilizada A grade curricular utilizada na modelagem ontológica realizada neste trabalho foi baseada em duas ementas do Curso em Bacharelado de Ciência da Computação. A primeira ementa refere-se a uma nova proposta que teve seu inicio de aplicação em 2006. Desta ementa foram consideradas as quarto primeiras etapas do curso. A segunda ementa referese à antiga ementa do mesmo curso anterior a 2006, entretanto foram consideradas as quatro ultimas etapas. As tabelas abaixo mostram a ementa de cada disciplina e o ano a que pertence. Todos os conceitos relacionados neste apêndice foram instanciados no domínio da ontologia criada. Desenvolvimento de Software II 7a Etapa – Ementa 2005 Conteúdo Programático 4. 1. Padrões de projeto 4.1. Conceitos básicos 1.1. Motivação e conceituação básica 4.2. Padrões de qualidade 1.2. Padrões GRASP 4.2.1. ISO 1.3. Padrões GoF 4.2.2. CMM e CMMi 1.3.1. Padrões criacionais 1.3.2. Padrões estruturais 1.3.3. Padrões comportamentais 1.4. Outros padrões 2. Métricas de software 2.1. Conceitos iniciais 2.2. Métricas estruturadas 2.3. Métricas orientadas a objeto 2.4. Papel das métricas no processo desenvolvimento de software 3. Qualidade de software Testes 3.1. Conceitos de testes e testabilidade 3.2. Tipos de testes 3.3. Verificação e Validação de software de 81 Ambientes Operacionais 1a Etapa – Ementa 2006 Conteúdo Programático 1. Organização e arquitetura de computadores 1.1. Organização básica de um computador 1.2. Unidade Central de Processamento: ULA, registradores, unidade de controle, clock, noções de execução de programas binários. 1.3. Memória: RAM, ROM, cache. 1.4. Dispositivos de E/S: tipos, interrupções, DMA 2. Sistemas Operacionais 2.1. Módulos básicos de um sistema operacional: gerenciador de processos, gerenciador de memória, gerenciador de arquivos, gerenciador de dispositivos. 2.2. Exemplos das arquiteturas Windows/Linux 2.3. Noções de processos 2.4. Gerenciamento de memória: noções de carregamento de programas, segmentação e paginação. 2.5. Gerenciamento de arquivos: conceito de sistema de arquivos, processo de formatação, conversão entre sistemas de arquivos. 2.6. Gerenciamento de dispositivos: rotinas de E/S e device drivers 3. Organização e funcionamento de redes 3.1. Conceitos de redes e principais topologias de interligação 3.2. Noções do modelo de referência ISO/OSI 3.3. Protocolos 3.4. Organização e equipamentos das camadas de hardware 3.4.1. Camada física: meios de transmissão, cabos, hubs e switchs. 3.4.2. Camada de enlace: noções de Ethernet, pontes. 3.4.3. Camada de rede: protocolo IP, roteadores. 3.5. Camada de transporte: noções dos protocolos TCP/UDP 3.6. Camada de aplicação: serviços HTTP, FTP e SMTP. 4. Internet 4.1. Pequeno histórico da Internet 4.2. Serviços da Internet 4.3. Noções de hipertexto e provedoria de serviços 4.4. Noções de HTML e XML 5. Ferramentas de desenvolvimento Linux (Parte prática) 5.1. Instalação do ambiente Linux 5.2. Comandos básicos de gerenciamento de processos e manipulação de sistemas de arquivos 5.3. Shells e linguagens de tipo shell script 5.4. Makefiles e o processo de ligação com bibliotecas 5.5. Ambientes de programação 82 Introdução a algoritmos e computação 1a Etapa - Ementa 2006 6.3. Estrutura Conteúdo Programático 1. intuitivas de problemas 7. Controle de fluxo 1.2. Formas de descrição de algoritmos 7.1. Fluxos de execução em programas 1.3. Exemplos de problemas elementares e 7.2. Laços do tipo while 7.3. Laços do tipo do...while algoritmos associados Programas e noções do processo de 7.4. Laços do tipo for compilação 7.5. Alteração de fluxos via break, continue e goto. 2.1. Linguagens de programação 2.2. Programa-fonte, programa-objeto 2.3. Transformação de 7.6. Prática em ambiente de compilação C e programa executável. 8. algoritmos Alocação dinâmica de memória 8.1. Noções de organização de programas em em tempo de execução programas 2.4. Noções de documentação 8.2. Funções de programas 8.3. Noções de aritmética de ponteiros 8.4. Prática em ambiente de compilação C 9. Sistemas numéricos e conversão entre Funções e procedimentos 9.1. Conceitos binária de funções e locais e globais, retorno. 9.2. Passagem por valor e por referência 9.3. Prática em ambiente de compilação C 3.3. Conversão entre as bases decimal e hexadecimal 10. Vetores 10.1. 4.1. Noções de tipos primitivos de dados (números e caracteres) de números Declaração estática e dinâmica de vetores Representação interna de dados 4.2. Representação básicos procedimentos: parâmetros, variáveis 3.2. Conversão entre as bases decimal e 10.2. 10.3. inteiros (positivos e negativos) 4.3. Noções de representação de números em ponto flutuante (IEEE 754) 4.4. Representação de caracteres (ASCII e Unicode) Variáveis Iniciação de vetores Algoritmos elementares de ordenação (seleção/inserção) e busca (linear/binária) 10.4. Prática em ambiente de compilação C 11. Arquivos 11.1. Noções elementares de sistemas de arquivos/diretórios 11.2. Arquivos do tipo texto 5.1. Definição e iniciação de variáveis 11.3. Arquivos binários 5.2. Operadores aritméticos 11.4. Manipulação de arquivos 5.3. Expressões aritméticas 11.5. Prática em ambiente de compilação C 5.4. Prática em ambiente de compilação C 6. dinâmica 2.6. Prática em ambiente de compilação C 3.1. Bases decimal, binária e hexadecimal. 5. alocação 2.5. Compilação e interpretação bases 4. para (malloc e free) (Windows e Linux) 3. seleções 6.4. Prática em ambiente de compilação C e algoritmos 2. múltiplas (switch... case). Fundamentos de Algoritmos 1.1. Noções com Estruturas de decisão 12. Registros 12.1. Declaração e iniciação de registros 6.1. Operadores relacionais 12.2. Vetores de registros 6.2. Estrutura do tipo if... else 12.3. Arquivos com registros 83 Técnicas de Desenvolvimento de Algoritmos 2a Etapa - Ementa 2006 5.1. Conteúdo Programático 1. Medidas de complexidade de 5.2. algoritmos 1.1. Medidas experimentais de eficiência de algoritmos 1.2. 5.3. Cotas superiores e a notação O (.). 1.3. Pilhas (em vetor) 5.1.1. Operações básicas 5.1.2. Aplicações Filas (em vetor) 5.2.1. Operações básicas 5.2.2. Aplicações Listas ligadas simples 5.3.1. Exemplos elementares de análise O 2. Cotas inferiores e a notação Ω (.). 5.3.2. Operações básicas 1.5. Otimalidade de algoritmos 5.3.3. Aplicações 6. Noções de corretude de algoritmos 6.1. Busca seqüencial 2.1. Pré e pós-condições 2.2. Invariantes de loops 6.1.1. Vetores Exemplos elementares de provas 6.1.2. Listas ligadas 6.1.3. Análise 6.2. Busca binária e sua análise Recursividade e divisão-e-conquista 3.1. Algoritmos recursivos x algoritmos 7. Exemplos elementares 7.2. Análise de algoritmos recursivos (recorrências básicas) 3.4. Cota inferior para Conversão de algoritmos recursivos para iterativos Algoritmos clássicos (em vetores) 7.2.1. Seleção 7.2.2. Inserção 7.2.3. Bubblesort 7.2.4. Mergesort 3.5. Paradigma de divisão-e-conquista 7.2.5. Heapsot 3.6. Relação entre divisão-e-conquista e 7.2.6. Quicksort 7.3. recursividade 3.7. ordenação baseada em comparação Ω (nlogn) de algoritmos recursivos 3.3. Algoritmos de ordenação 7.1. iterativos 3.2. Análise algoritmos Exemplos de aplicação de divisão- de pior clássicos caso de para os ordenação baseados em comparações e-conquista, com análise. 7.4. Algoritmo Radixsort Backtracking 4.1. 4.2. Algoritmo geral de backtracking Aplicação em problemas clássicos: 8. Busca de padrões em strings 8.1. cruzadas. 4.3. Eficiência de algoritmos baseados em backtracking Problema da busca de padrões em strings e aplicações labirinto, jogos de tabuleiro, palavras8.2. Algoritmo de força bruta 8.3. Algoritmo de Karp-Rabin 8.4. Algoritmo (KMP) 5. de Algoritmos de busca de corretude 4. dinâmica 1.4. 2.3. 3. Alocação estruturas (.). Estruturas de dados básicas de Knuth-Morris-Pratt 84 Desenvolvimento Orientado a Objeto 3a Etapa - Ementa 2006 Conteúdo Programático 1. Conceitos básicos de orientação a objetos 1.1. Realidade, conceitos e domínios 1.2. Objetos, classes e instanciação 1.3. Ciclo de vida de objetos 2. Relacionamentos entre objetos 2.1. Conexões, relacionamentos e mapeamentos 2.2. Associações 2.3. Generalização e especialização 2.4. Agregação 2.5. Sub-tipos e super-tipos 2.6. Noções de coesão e acoplamento entre objetos 3. Estrutura comportamental de objetos 3.1. Estados de objetos 3.2. Mudanças de estado 3.3. Eventos e triggers 3.4. Condições de controle 4. Representações diagramáticas de domínios 4.1. Diagramas de casos de uso 4.2. Diagramas de atividade 4.3. Diagramas de classes 4.4. Diagramas de estados (ou máquina de estados) 4.5. Diagramas de seqüência 4.6. Diagramas de colaboração 4.7. Diagramas de pacotes 4.8. Diagramas de deployment 85 Estrutura de dados 3a Etapa - Ementa 2006 2.4.4. Conteúdo Programático 1. 2. 3. Tipos abstratos de dados 1.1. Conceito de tipo abstrato de dados 1.2. Especificação e refinamento 1.3. Pré e pós-condições 3.1. Funções de hashing Resolução 3.4. Especificação do tipo de dado Tipos de listas Padrão de projeto Iterator e 3.5. 3.6. Implementação de listas via STL (Standard Template Library) 4. Especificação do tipo de dado 2.4. 4.5. 4.6. Aplicações de dado de projeto Visitor e Árvores binárias de busca Heaps e o algoritmo de ordenação Estratégias de balanceamento (AVL,Splay) 4.7. Especificação do tipo de dado Implementação e análise de eficiência 4.8. Implementação (vetor/lista) e 5. de filas via Aplicações Especificação do tipo de dado Implementação (vetor/lista) e Aplicações Árvores n-árias 5.1. Especificação do tipo de dado abstrato Árvore n-ária 5.2. Pomares(Orchads), florestas e florestas ordenadas 5.3. Árvores de busca lexicográfica (tries) 5.4. B-árvores 5.5. Implementação eficiência Implementação de deques via STL tipo Heapsort análise de eficiência 2.4.3. de percurso em árvores abstrato Deque 2.4.2. do Padrão Deques 2.4.1. Especificação Percursos em árvores STL 2.3.4. análise 4.3. 4.4. Implementação de pilhas via Implementação e 4.2. Implementação (vetor/lista) e análise de eficiência 2.3.3. Implementação Árvores binárias abstrato Fila 2.3.2. hashing Aplicações Filas 2.3.1. e hashing Implementação de hashing via STL STL 2.2.4. Bucket abstrato Árvore Binária análise de eficiência 2.3. Resolução de colisão via estruturas 3.7. 4.1. Aplicações abstrato Pilha 2.2.3. via 3.8. Pilhas 2.2.2. colisão eficiência Implementação e análise de eficiência 2.2.1. de extensível percurso em listas 2.2. dado ligadas 2.1.2. 2.1.6. de endereçamento aberto 2.1.3. 2.1.5. tipo 3.2. abstrato Lista 2.1.4. do 3.3. Listas 2.1.1. Especificação abstrato Tabela de Hashing Estruturas Lineares 2.1. Aplicações Tabelas de Hashing 5.6. Aplicações e análise de 86 Linguagem de programação I 3a Etapa - Ementa 2006 Conteúdo Programático 5. 1. Teoria elementar de tipos 1.1. Classificação de tipos: fundamentais e compostos 2. Classes derivadas 5.1. Herança múltipla 5.2. Polimorfismo universal por inclusão 5.3. Classes-base virtuais 5.4. Métodos virtuais e a Tabela de 1.2. Subtipos 1.3. Equivalência de tipos 1.4. Tipos monomórficos e polimórficos 5.5. Métodos virtuais e herança simples 1.5. Promoção e conversão de tipos 5.6. Métodos virtuais e herança múltipla 1.6. Lvalues 5.7. 1.7. Name spaces Métodos Virtuais Estruturação elementar de classes e 5.8. Renaming 5.9. Dispatching: 2.2. 2.4. duplo e Classes como tipos derivados Atributos e funções (funções 6. isoladas e funções-membro) 2.3. simples, múltiplo, RTTI objetos 2.1. Classes-base virtuais e métodos virtuais Construtores Objetos e o processo de Tratamento de exceções 6.1. Mecanismos de exceções em C++ 6.2. Regiões críticas e blocos try-catch 6.3. instanciação 2.5. Ponteiros para objetos 2.6. Destruidores 2.7. Herança Simples Tratamentos múltiplos e ordem de manipulação 6.4. Lançamento de exceções e declarações throw 6.5. Tratamento hierárquico de exceções 3. Encapsulamento e acesso 3.1. Controle de acesso: estruturas x 7. classes 3.2. Especificadores de acesso: private, protected e public 3.3. 4. Declarações friend Acúmulo (overloading) de funções e 8. Streams 7.1. Conceito de stream 7.2. Hierarquia de streams C++ 7.3. Streams de entrada 7.4. Streams de saída Templates operadores 8.1. Tipos parametrizados 4.1. Conceito de acúmulo 8.2. Polimorfismo universal paramétrico 4.2. Acúmulo de funções 8.3. Templates de função 4.3. Declaração de operadores 8.4. Templates de classe 4.4. Acúmulo de operadores 8.5. STL ( Standard Template Library ) 4.5. Mecanismo de acesso na presença de acúmulo 87 Organização e Arquitetura de Computadores 3a Etapa - Ementa 2006 Conteúdo Programático 1. 2. Organização funcional 1.1. Unidade Central de Processamento 1.2. Memória 1.3. Barramentos 1.4. Subsistemas de E/S 1.5. Medidas de performance Unidade Central de Processamento 2.1. 3. Estruturas funcionais 2.1.1. Registradores 2.1.2. Unidade de lógica e aritmética 2.1.3. Unidade de Controle 2.1.4. Data Path 2.2. Conjuntos de instruções: características, modos de endereçamento de formatos 2.3. Noções de Assembly e mapeamento para instruções em linguagem de máquina 2.4. Arquiteturas CISC e RISC 2.5. Execução de instruções via microprogramação 2.6. Paralelismo no nível de instrução 2.7. Processadores escalares, super-escalares e vetoriais 2.8. Estudo de arquiteturas de processadores atuais Memória 3.1. Hierarquia de memória 3.2. Tecnologias de memória 3.3. Organização da memória principal e formas de acesso 3.4. Memória cache: cache interno/externo, princípio de funcionamento, escrita/leitura, coerência 4. 5. 6. Barramentos 4.1. Tipos de barramento 4.2. Sinalização e controle Sub-sistemas de E/S 5.1. Polling 5.2. Interrupções 5.3. Acesso direto à memória (DMA) 5.4. Canais de E/S 5.5. Noções de device drivers Noções de arquiteturas lógico-programáveis 6.1. Arquiteturas FPD: SPLD, CPLD e FPGA 6.2. Programação SPLD 6.3. Programação CPLD 6.4. Programação FPGA políticas de 88 Analise de Algoritmos 4a Etapa – Ementa 2006 Conteúdo Programático 1. Análise assintótica 1.1. Formalização da notação assintótica 1.2. Cotas inferiores e superiores 1.3. Estimação de somas via Teorema do Confronto para séries 1.4. Resolução de recorrências 1.4.1. Método de substituição 1.4.2. Método da árvore de recursão 1.4.3. Método baseado no Teorema-Mestre 1.5. Exemplos de análise de algoritmos iterativos e recursivos clássicos (busca e ordenação) 2. Análise probabilística 2.1. Breve revisão dos conceitos de variável aleatória, esperança matemática e distribuição de probabilidade discretas 2.2. Método das variáveis aletórias indicadoras 2.3. Análise de caso médio para algoritmos clássicos 2.4. Noções de algoritmos aleatórios 3. Análise amortizada 3.1. Operações sucessivas em estruturas de dados e o problema de sub-estimação assintótica 3.2. Método agregado 3.3. Método baseado em atribuição de pesos (accounting method) 3.4. Método do potencial 4. Programação dinâmica 4.1. Problemas e sub-problemas 4.2. Dependências entre problemas e sub-problemas 4.3. Armazenamento e junção de soluções parciais 4.4. Exemplos clássicos de programação dinâmica 5. 4.4.1. Multiplicação de cadeias de matrizes 4.4.2. Maior subseqüência comum 4.4.3. Árvores de busca ótimas Algoritmos gulosos (greedy) 5.1. Noções de matróides 5.2. Estruturas de matróides em problemas 5.3. Estratégia gulosa 5.4. Exemplos clássicos de algoritmos gulosos 6. 5.4.1. Problema de seleção de atividades 5.4.2. Código de Huffman Algoritmos aproximativos 6.1. Soluções exatas e aproximadas de problemas 6.2. Raios de aproximação 6.3. Exemplos de algoritmos aproximativos para problemas de otimização 89 Introdução a Computação Gráfica 4a Etapa – Ementa 2006 Conteúdo Programático 5.1. Curvas parametrizadas 1. 5.2. Curvas de Bézier Processamento Gráfico 1.1. Conceito de Processamento Gráfico 5.3. Curvas Splines 1.2. Áreas 5.4. Superfícies parametrizadas de Processamento Gráfico: computação gráfica, processamento de 5.5. Superfícies de Bézier imagens, 5.6. Superfícies Splines visão computacional e modelagem 6. 1.3. Exemplos de problemas 6.1. Sistema de coordenadas homogêneas de 6.2. Transformação bidimensionais rígidas computação gráfica 1.4. Exemplos de problemas 6.3. Transformações tridimensionais rígidas de 6.4. Deformações processamento de imagens 1.5. Exemplos de problemas de visão 7. de câmeras 1.6. Exemplos de problemas de modelagem 7.2. Projeções ortogonal e perspectiva 1.7. Suporte de hardware e software para 7.3. Transformação de vista processamento gráfico 7.4. Remoção Hardware para Computação Gráfica 2.1. Placas de vídeo e aceleração gráfica 2.2. Monitores de vídeo: CRT, LCD 8. ocultas e Fundamentos de Teoria da Cor 2.3. Dispositivos de entrada gráfica 8.1. Natureza física da cor 2.4. Integração entre dispositivos gráficos 8.2. Amostragem e reconstrução de cores 2.5. Hardware de alto desempenho 8.3. Espaços de cores: CIE, RGB, HSV e CMYK Bibliotecas Gráficas 3.1. Pipeline básica da computação gráfica 8.4. Conversão entre espaços de cores 3.2. Organização 8.5. Quantização de cores básica de bibliotecas 9. 3.4. Estrutura das gráficas: principais Modelos de iluminação 9.1. Interação entre luz e material 3.3. Integração com hardware bibliotecas DirectX, OpenGL, 9.2. Iluminação e shading 9.3. Modelo de iluminação de Lambert 9.4. Modelo de iluminação de Phong QuickDraw(Quesa), Java2D/3D. 9.5. Shading Flat, Phong e Gouraud Modelagem Poligonal 4.1. Malhas poligonais 10. Geração e Mapeamento de Textura 4.2. Resolução de malhas 10.1. Espaços de textura 4.3. Simplificação e refinamento 10.2. Geração de textura por ruído 4.4. Estruturas de dados para malhas 4.5. Geração 10.3. Geração de textura por displacement e bump mapping poligonais de modelagem 10.4. Mapeamento malhas poligonais: manual, scanners bidimensionais métodos 10.5. Mapeamento tridimensionais, procedimentais. 5. superfícies 7.5. Rasterização poligonal e gráficas 4. de clipping plasma 3. Câmeras e Visualização 7.1. Parâmetros intrínsecos e extrínsecos computacional 2. Transformações Geométricas Curvas e Superfícies tridimensionais de texturas de texturas 90 Introdução a engenharia de software 4a Etapa – Etapa 2006 5.3. Testes de integração Conteúdo Programático 1. Processo de desenvolvimento 5.4. Testes orientados a objetos de 5.5. Validação de sistemas críticos software 1.1. Processo de engenharia de sistemas 6. 6.1. Noções de medição e métricas de 1.2. Modelos de processo de software software 1.3. Especificação de software 1.4. Projeto e implementação 6.2. Qualidade de processo e de produto 1.5. Validação de software 6.3. Medições de processo 1.6. Evolução de software 6.4. Noções de modelos de maturidade 1.7. Qualidade de software 2. 7. 7.1. Sistemas legados 2.1. Atividades de gerenciamento 7.2. Evolução de arquitetura 2.2. Planejamento de projeto 7.3. Reengenharia de software 2.3. Programação de projeto 7.4. Reengenharia de dados 2.5. Noções de estimativa de custos Engenharia de requisitos 3.1. Requisitos de software 3.2. Documento de requisitos 3.3. Estudos de viabilidade 3.4. Obtenção e análise de requisitos 3.5. Validação e gerenciamento de requisitos 3.6. Modelos de sistemas 3.6.1. Modelos de contexto 3.6.2. Modelos de comportamento 3.6.3. Modelos de dados 3.6.4. Modelos de objetos 3.7. Noções de prototipação de software 4. Projeto de software 4.1. Projeto de Arquitetura 4.2. Projeto Estruturado 4.3. Projeto orientado a objetos 4.4. Projeto de software de tempo real 4.5. Projeto com reuso 4.6. Projeto de interfaces com usuário 4.7. Projeto de sistemas críticos 5. Evolução de software Gerenciamento de projetos 2.4. Gerenciamento de riscos 3. Qualidade de software Verificação e validação 5.1. Planejamento de verificação validação 5.2. Testes de detecção de defeitos e 91 Linguagem de Programação II 4a Etapa – Ementa 2006 interfaces Conteúdo Programático 5.2. Extensão de interfaces 1. 5.3. Comparação com classes abstratas Características de linguagem 1.1. Histórico da linguagem 1.2. Vantagens e deficiências da linguagem 6. 1.4. Geração de bytecodes e Pacotes 6.1. Organização 1.3. Comparação com outras linguagens implementação de pacotes a interpretação viam JVM (Java Virtual 6.2. Acesso a pacotes Machine) 6.3. Organização dos pacotes básicos da linguagem Java: java.lang, java.util. 1.5. Integração com outras linguagens java.io, 2. e java.net, java.awt e javax.swing Sintaxe básica 2.1. Tipos e operadores 2.2. Declaração de variáveis 2.3. Comandos condicionais 7. (if, Classes básicas e utilitárias 7.1. Pacote java.lang ( classes básicas ) swtich- 7.2. Pacote java.util ( classes utilitárias ) case) e iteração(for,while, do-while) 2.4. Arrays 2.5. Organização básica de classes e 8. Tratamento de E/S 8.1. Modelo de streams programas Java 8.2. Pacote java.io 3. 8.3. Tratamento de arquivos Tratamento de exceções 3.1. Principais exceções 3.2. Detecção e recuperação de exceções via try-catch 9. Fundamentos de programação concorrente e distribuída 3.3. Tratamentos com finally 9.1. Programação com threads 3.4. Lançamento de exceções via throw 9.2. Métodos de sincronização e a declaração synchronized 3.5. Sinalização de exceções com throws 9.3. Noções do modelo cliente-servidor e 3.6. Construção de classes de exceção sockets 4. 9.4. Pacote java.net Estruturação de classes 4.1. Atributos, métodos, construtores e instanciação 10. Interfaces gráficas 4.2. Superclasses, sub-classes e o processo 10.1. Pacote java.awt 10.2. Pacotes javax.swing de herança em Java 10.3. Modelo MVC em componentes Swing 4.3. Polimorfismo 4.4. Declarações static e final 4.5. Modificadores de acesso: public, 11. Applets 11.1. Modelo de execução de applets e protected, default e private políticas de segurança 4.6. Classes abstratas 11.2. Construção de applets 5. 11.3. Integração com páginas HTML Interfaces 5.1. Declaração e implementação de 92 Programação Matemática 4a Etapa – Ementa 2006 Conteúdo Programático 1. Problemas de Otimização 1.1. Tipos de problemas de otimização 1.2. Tamanho do problema 1.3. Complexidade de problemas de otimização 1.4. Algoritmos iterativos e convergência 1.5. Modelagem de problemas 2. Programação Linear 2.1. Propriedades elementares de problemas lineares: estrutura geométrica, soluções básicas, Teorema Fundamental da Programação Linear, Convexidade 2.2. Método Simplex 2.3. Dualidade e o Método Simplex Dual 2.4. Problema de Transporte 2.5. Problema de Atribuição 3. Programação Inteira 3.1. Conceito de relaxação 3.2. Relaxação em Programação Linear 3.3. Relaxações combinatórias e lagrangeanas 3.4. Métodos do tipo branch-and-bound 3.5. Métodos baseados em cortes 4. Programação Não-Linear sem Restrições 4.1. Funções côncavas e convexas 4.2. Funções convexas de minimização e maximização 4.3. Método de busca por seção áurea 4.4. Método do gradiente descendente 4.5. Método do gradiente conjugado 5. Programação Não-Linear com Restrições 5.1. Multiplicadores de Lagrange 5.2. Condições KKT (Karush-Kuhn-Tucker) 5.3. Método da projeção de gradiente 5.4. Método do gradiente reduzido 5.5. Método de penalidades e barreiras 93 Introdução a compiladores 5a Etapa Conteúdo Programático 1. Fundamentos do processo de compilação 1.1. Noções elementares de linguagens formais 1.2. Compilação x interpretação 1.3. Módulos e interfaces de um compilador 1.4. Ferramentas de geração automática de analisadores 2. Análise léxica 2.1. Tokens léxicos 2.2. Expressões regulares 2.3. Autômatos finitos 2.4. Geradores de analisadores léxicos 3. Análise sintática 3.1. Gramáticas livres de contexto 3.2. Análise preditiva 3.3. Análises LL e LR 3.4. Geradores de analisadores sintáticos 4. Sintaxe abstrata 4.1. Ações semânticas 4.2. Árvores de sintaxe abstrata (AST) 4.3. Percursos em AST e o padrão Visitor 5. Análise semântica 5.1. Tabelas de símbolos 5.2. Verificação de tipos 6. Registros de Ativação 6.1. Organização de programas em tempo de execução 6.2. Stack frames 7. Geração de código intermediário 7.1. Máquinas virtuais 7.2. Árvores de representação intermediárias 7.3. Geração de árvores de representação intermediárias 7.4. Árvores canônicas 8. Geração de código Assembly 8.1. Seleção de instruções 8.2. Análise de sobrevivência 8.3. Alocação de registradores 8.4. Padrões de geração de código 94 Sistemas Operacionais 5a Etapa – Ementa 2005 Conteúdo Programático 1. Revisão de conceitos de arquitetura de computadores e sistemas de computação. 2. Conceitos fundamentais de sistemas operacionais. 2.1. Processos 2.2. Arquivos e diretórios 2.3. Tipos de sistemas operacionais 2.4. Alternativas de estruturação interna 3. Gerência de processos. 3.1. Conceituação de processo 3.2. Estado de processos e eventos principais 3.3. Escalonamento de processos e gerência de processador 3.4. Comunicação entre processos 3.4.1. Mecanismos de comunicação 3.4.2. Sincronização (semáforos, monitores) 3.4.3. Deadlock 3.5. Problemas clássicos 4. Gerência de memória. 4.1. Alocação de memória 4.2. Conceito de memória virtual (paginação e segmentação) 4.3. Algoritmos de substituição de páginas 5. Gerência de arquivos. 5.1. Arquivos e diretórios 5.2. Organização de arquivos e métodos de acesso 5.3. Alocação de espaço em disco 5.4. Segurança e proteção 6. Gerência de E/S. 6.1. Dispositivos de entrada e saída de dados 6.2. Conceituação de device drivers 6.3. Algoritmos de escalonamento do braço de discos magnéticos 7. Introdução às Redes de computadores. 7.1. Conceitos principais 7.2. Protocolos de comunicação 7.3. Exemplos: Ethernet e Internet 95 Técnicas avançadas de computação 5a Etapa – Ementa 2005 Conteúdo Programático 1. Defeito, Erro e falha (quebra). Tolerância a erros. 2. Fases no processo de tolerância a falhas 2.1. detecção 2.2. confinamento do dano e controle 2.3. Recuperação do erro 2.4. tratamento da falha sem interrupção do serviço 3. Vista geral de tolerância a falhas em hardware 3.1. Redundância modular tríplica 4. Segurança e disponibilidade de sistemas 5. Tolerância em sistemas distribuídos 5.1. Comunicação entre processos 5.2. Ordem dos eventos 6. Blocos construtivos básicos 6.1. consenso bizantino 6.2. relógios sincronizados 6.3. armazenamento estável 6.4. processos com parada em caso de falha 6.5. detecção de falhas em sistemas distribuídos 7. Rede confiável 7.1. Protocolo de três fases 8. Recuperação para um estado confiável 8.1. efeito dominó 8.2. pontos de verificação (check-points) distribuídos 9. Falhas de projeto de softwares 9.1. abordagens para softwares de um só processo 9.2. recuperação retroativa em ambientes distribuídos 9.3. recuperação avante em sistemas distribuídos 96 Teoria da Computação 5a Etapa – Ementa 2005 Conteúdo Programático 1. Máquinas de Turing 1.1. Máquinas de Turing determinísticas 1.2. Diagramas de transição 1.3. Computação com Máquinas de Turing 1.3.1. Linguagens recursivas 1.3.2. Funções recursivas 1.3.3. Linguagens recursivamente enumeráveis 1.4. Extensões da Máquina de Turing 2. 1.4.1. Máquinas com múltiplas fitas 1.4.2. Máquinas com acesso aleatório 1.4.3. Máquinas não-determinísticas Indecidibilidade 2.1. Tese de Church-Turing 2.2. Máquinas de Turing Universais 2.3. Problemas indecidíveis no modelo de Turing 2.4. Provas formais de indecidibilidade 3. Complexidade 3.1. Problemas de decisão e linguagens 3.2. Complexidade de tempo e espaço 3.3. Classes P, NP e a questão P=NP? 3.4. Redução entre problemas 3.5. Classe de problemas NP-completos e NP-difíceis 3.6. Exemplos de prova de NP-completude 4. Modelos não-convencionais de computação 4.1. Computação Quântica 4.2. Computação Molecular 4.3. Computação Natural 97 Desenvolvimento de Softwares I 6a Etapa – Ementa 2005 Conteúdo Programático 1. Apresentação do contexto 1.1 Aplicabilidade e adequação de aspectos de teoria de tipos no desenvolvimento de software orientado a objetos. 1.1.1 Polimorfismo e Binding 1.1.2 Programação Genérica 1.1.3 Variância 2. Arquiteturas cliente-servidor 2.1 – Análise comparativa de tecnologias do lado servidor 2.2 – Padrões para programação cliente-servidor 2.3 – Desenvolvimento de softwares do lado servidor 2.4 – Estratégias de componentização 3. Armazenamento e recuperação da informação 3.2.1 – Persistência de objetos 3.2.2 – Tecnologias de manipulação de bancos de dados relacionais 3.2.3 – Manipulação de fontes de dados hierárquicas 98 Grafos 7a Etapa – Ementa 2005 Conteúdo Programático 1. Conceitos e notação 2. Estruturas de dados para grafos 2.1. Matrizes de adjacências e de incidências 2.2. Listas de adjacências e de incidências 3. Conexidade e ciclos 3.1. Determinação de conexidade 3.2. Aresta-conexidade 3.3. Vértice-conexidade 3.4. Detecção de ciclos 4. Árvores geradoras de custo mínimo 4.1. Algoritmo de Kruskal 4.2. Algoritmo de Prim 5. Problema do caminho de custo mínimo 6. Planaridade 7. Grafos eulerianos 5.1. Algoritmo de Dijkstra 6.1. Teorema de Kuratowsky 7.1. Trilhas fechadas de Euler 7.2. Teorema de Euler 7.3. Trilhas abertas de Euler 8. Emparelhamentos 8.1. Teorema de Berge 8.2. Emparelhamentos em grafos bipartidos 9. 8.2.1. Teorema de Hall 8.2.2. Método Húngaro Coloração de arestas e vértices 9.1. Coloração de arestas 9.1.1. Teorema de Vizing 9.2. Coloração de vértices 9.2.1. Teorema das 4 cores 10. Fluxos em redes 10.1. Teorema do fluxo máximo-corte mínimo 10.2. Algoritmo de Ford-Fulkerson 99 Inteligência Artificial 6a Etapa Conteúdo Programático 1. Introdução à Inteligência Artificial (IA) 1.1. Histórico 1.2. Caracterização 1.3. Vantagens e desvantagens 1.4. Principais resultados da IA. 2. Resolução de Problemas 2.1. Encadeamento progressivo e regressivo 2.2. Cálculo de Predicados 2.3. Princípio da Resolução 2.4. Prova Automática de Teoremas 2.5. A Linguagem PROLOG. 3. Sistemas Especialistas 3.1. Organização e Programação 3.2. Linguagens e Ambientes de construção de Sistemas Especialistas. 4. Abordagens Alternativas da IA 4.1. Redes Semânticas e Frames 4.2. CBR – Case Based Reasoning (Ex.: CBR-Express) 4.3. Redes Neuronais 4.4. Sistemas Difusos ( Fuzzy Systems) 5. Inteligência Artificial Distribuída 5.1. Sistemas Distribuídos e Paralelismo 5.2. Sistemas Multiagentes 100 Linguagens Formais e Autômatos 6a Etapa – Ementa 2005 autômatos à pilha Conteúdo Programático 1. 5.1. Alfabetos, palavras e linguagens Gramáticas livres de contexto 1.1. Alfabetos 5.1.1. 1.2. Palavras 5.1.2. Recursão à esquerda e à direita Ambigüidade Formas 1.2.1. Palavras finitas e infinitas 5.1.3. 1.2.2. Operações básicas 5.1.4. Derivações à esquerda e à direita Conceitos básicos 1.3.2. Morfologia, sintaxe e semântica 2. 3. Chomsky 5.2. Autômatos à pilha 5.3. Algoritmos de reconhecimento 2.1. Definição 5.3.2. Algoritmo CYK (Cocke-Younger-Kasami) 2.2. Derivação 5.3.3. Algoritmo de Early 2.3. Representação e implementação 5.3.4. Aplicações e aspectos de implementação Hierarquia de Chomsky 5.3.5. Aplicações 3.1. Aspectos históricos e relações com 6. Máquinas de Turing 6.1. Definições linguagens naturais 6.2. Tipos de máquinas de Turing 3.4. Linguagens sensíveis ao contexto 6.2.1. Máquinas com fita simples ilimitada 3.5. Linguagens 6.2.2. Máquinas com fita simples ilimitada 6.2.3. Máquinas com múltiplas fitas recursivamente enumeráveis Linguagens regulares e autômatos 6.3. Máquinas de Turing como reconhecedores de linguagens finitos 7. 4.1. Abordagem operacional Linguagens sensíveis ao contexto e 4.1.1. Autômatos finitos e determinísticos Máquina de Turing com fita limitada 4.1.2. Autômatos finitos não-determinístiocs 7.1. Gramáticas sensíveis ao contexto Autômatos finitos não-determinísticos 7.2. Algoritmos 4.1.3. de reconhecimento 7.3. Aplicações Minimização de estados 4.2. Abordagem denotacional 8. Linguagens recursivamente 4.2.1. Expressões regulares enumeráveis e Máquina de Turing 4.2.2. Relação entre expressões regulares e 8.1. Linguagens autômatos finitos 4.3. Abordagem axiomática 4.3.2. Relação com expressões regulares e 8.3. Algoritmos autômatos finitos aspectos de Aplicações livres de contexto e de reconhecimento com Máquinas de Turing 9. e implementação Linguagens e 8.2. Gramáticas irrestritas Gramática regulares 4.4.1. recursivas recursivamente enumeráveis 4.3.1. 4.4. Aplicações com Máquinas de Turing com fita limitada com transições vazias 4.1.4. e equivalências 3.3. Linguagens livres de contexto 5. e 5.3.1. Algoritmo com autômato à pilha Gramáticas 3.2. Linguagens regulares 4. de Greibach 1.3. Linguagens 1.3.1. normais Modelos alternativos de linguagens 9.1. Gramáticas de grafos 9.1.1. Conceitos básicos 9.1.2. Aplicações em programação de jogos 101 Organização e arquitetura de computadores 6a Etapa – Ementa 2005 Conteúdo Programático 1. Conceitos básicos de computadores 2. Implementação baseada numa seqüência aninhada de níveis de abstração. 3. Unidades funcionais e estrutura interna de uma UCP 3.1. Barramentos 3.2. Unidade central 3.3. Memória interna e externa 3.4. Entrada e saída, periféricos, dispositivos complementares 3.5. Suporte ao Sistema Operacional 4. Unidade central – detalhamento 4.1. Aritmética e lógica 4.2. Conjuntos de instruções 4.3. Modos de endereçamento e formatos das instruções – desempenho 4.4. Estrutura e funcionamento da CPU 5. Técnicas para aumento de desempenho de computadores 5.1. Ciclo de instruções e pipeline 5.2. Memória cache e entrelaçada (níveis de cache) 5.3. Acesso à memória. Interrupções e E/S. 6. Computadores de conjunto reduzido de instruções 6.1. Filosofia RISC 6.2. Soluções para conjuntos de registradores 6.3. Soluções para chamada de sub-rotinas 7. Máquinas paralelas: computadores vetoriais, arrays de processadores, multiprocessadores. 102 Banco de dados 6a Etapa – Ementa 2005 Conteúdo Programático 1. Conceitos básicos 1.1. Objetivos de um sistema de banco de dados 1.2. Componentes de um sistema de banco de dados 2. Modelo entidade-relacionamento 2.1. Diagramas entidade-relacionamento 2.2. Extensões do modelo entidade-relacionamento 2.3. Mapeamento de diagramas entidade-relacionamento 3. Modelo relacional 3.1. Álgebra relacional 3.2. Álgebra relacional estendida 4. SQL 4.1. Definição de dados 4.2. Manipulação de dados 4.3. Consultas 5. Restrições de integridade 5.1. Integridade de domínio 5.2. Unicidade das chaves candidatas 5.3. Integridade referencial 5.4. Asserções 5.5. Dependências funcionais 6. 5.5.1. Axiomas de Armstrong 5.5.2. Fecho de um conjunto de dependências funcionais 5.5.3. Fecho de um conjunto de atributos 5.5.4. Cobertura canônica Normalização 6.1. Decomposições 6.2. Forma normal de Boyce-Codd 6.3. Terceira forma normal 6.4. Segunda forma normal 6.5. Primeira forma normal 7. Indexação e Hashing 7.1. Árvores B e B+ 7.2. Hashing aberto e fechado 103 Computação Gráfica 7a Etapa – Ementa 2005 Conteúdo Programático 1. 5. 5.1. Iluminação local e global 1.1. Monitores 5.2. Modelos de iluminação local 1.2. Placas de vídeo e 5.2.1. aceleradoras 1.3. Principais dispositivos (mouse, mesas de 5.3.1. entrada digitalizadoras, 6. Texturas por mapeamento inverso 1.4. Impressoras e plotters 6.2. Texturização tridimensional Cor 2.1. Noções sobre o sistema 6.3. Síntese de texturas visual 7. humano Processamento da imagem 7.1. Conceito de imagem 2.2. Significado físico de cor 7.2. Filtros 2.3. Sistemas de representação de cor 2.4. Transformações entre sistemas de 8. Animação 8.1. Processo representação de animação por computador 2.5. Quantização de cores 2.6. Dithering 8.2. Quadros( frames) e quadros-chave Processamento bidimensional 8.3. Interpolação de quadros 3.1. Pipeline bidimensional 8.4. Warping e morphing 3.2. Modelamento bidimensional 3.3. Algoritmos primitivas: para traçado segmentos de retas de e círculos 3.4. Curvas 3.5. Transformações geométricas 3.6. Clipping 3.7. Bibliotecas para processamento bidimensional 4. Radiosidade 6.1. Texturização scanners,etc) 3. Modelo de Phong 5.3. Modelos de ilimunação global gráficas 2. Iluminação Hardware para computação gráfica Processamento tridimensional 4.1. Pipeline tridimensional 4.2. Configuração geométrica tridimensional 4.3. Modelamento tridimensional 4.3.1. B-Rep 4.3.2. CSG 4.4. Transformações geométricas 4.5. Visualização tridimensional 4.6. Z-Buffer 4.7. Ray-Tracing 4.8. Bibliotecas tridimensional para processamento 104 Redes de Computadores 7a Etapa – Ementa 2005 Conteúdo Programático 1. Redes de Computadores e a Internet 1.1 Protocolos de rede 1.2 Camadas de protocolos e seus modelos de serviços 1.3 OSI e TCP/IP 2. Camada de Aplicação 2.1 Princípios dos protocolos da camada de aplicação 2.2 HTTP 2.3 DNS 2.4 Programação de socket com TCP 2.5 Programação de socket com UDP 3. Camada de Transporte 3.1 Princípios e serviços da camada de transporte 3.2 Multiplexação e demultiplexação das aplicações 3.3 Transporte sem conexão: UDP 3.4 Princípios da transferência de dados confiável 3.5 Transporte orientado a conexão: TCP 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento no TCP 4. Camada de rede e Roteamento 4.1 Modelos de serviços de rede 4.2 Princípio de roteamento 4.3 Protocolo de internet (IP) 4.4 IPv6 5. Camada de enlace e Redes locais 5.1 Serviços da camada de enlace 5.2 Técnicas de detecção e correção de erros 5.3 Protocolos de acesso múltiplos e redes locais (LANs) 5.4 Endereços de LAN e ARP 5.5 Ethernet 5.6 Hubs, bridges e switches 5.7 Redes locais sem fio (IEEE 802.11) 5.8 PPP 5.9 ATM, X.25 e Frame Relay 6. Redes para multimedia 7. Segurança em redes de computadores 8. Gerência de redes 105 Sistemas Distribuídos 8a Etapa – Ementa 2005 Conteúdo Programático 1. Conceitos básicos de sistemas distribuídos 1.1. Análise comparada de arquiteturas de software 1.2. Conceitos de distribuição e paralelismo 1.3. Paradigmas de linguagens de programação com suporte a distribuição 1.4. Aplicabilidade – estudos de casos 2. Chamadas remotas de procedimentos 2.1. Conceituação e aplicabilidade 2.2. Arquiteturas baseadas em RPC 2.3. Implementação de RPCs – conceitos técnicos: 2.3.1. Formas canônicas 2.3.2. Stubs e skeletons 2.3.3. Binders 2.3.4. Marshalling de parâmetros 2.4. Recuperação de falhas 3. Objetos distribuídos 3.1. Conceitos básicos 3.2. Padrões de interoperabilidade de objetos 3.2.1. RMI 3.2.1.1. Arquitetura de RMI sobre JRMP 3.2.1.2. Arquitetura de RMI sobre IIOP 3.2.2. CORBA 3.2.2.1. Definições básicas 3.2.2.2. IDL 3.2.2.3. Integração CORBA – RMI 3.2.2.4. Serviços CORBA 3.2.3. SOAP 3.2.3.1. Conceitos inicias 3.2.3.2. Uso de XML como forma canônica 3.2.3.3. Integração com outros padrões 3.2.4. Tecnologias alternativas 106 Teoria da Informação 8a Etapa – Ementa 2005 Conteúdo Programático 1. Teorema da eqüipartição 2. Teoremas de codificação (amostragem) de Shannon 3. Entropia Máxima 4. Aplicações à compressão: 4.1. Algoritmos de compressão sem perdas 4.1.1. RLE (Run Length Encoding) 4.1.2. Huffman (estático e adaptativo) 4.1.3. Aritmético 4.1.4. Baseados em dicionários (LZ77, LZ78, LZW) 4.2. Algoritmos de compressão com perdas 4.2.1. JPEG (Joint Photographic Expert Group) - imagens estáticas 4.2.2. MPEG (Moving Picture Expert Group) - imagem + som + restrição de tempo real 4.2.3. MPEG-1, MPEG-2, MPEG-4