117
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

Ambiente de Apoio à Avaliação Continuada Baseado em ...tede.mackenzie.br/jspui/bitstream/tede/1472/1/Mariana...Ambiente de Apoio à Avaliação Continuada Baseado em Aprendizagem

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

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

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.

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.

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.

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

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

1 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

2 APRENDIZAGEM SIGNIFICATIVA E AVALIAÇÃO CONTINUADA........................................ 9

2.1 APRENDIZAGEM SIGNIFICATIVA....................................................................................................... 9

2.2 AVALIAÇÃO CONTINUADA DA APRENDIZAGEM ............................................................................. 14

3 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

4 MODELAGEM ONTOLÓGICA DE UM CURSO DE GRADUAÇÃO E SUA INSTANCIAÇÃO

EM CIÊNCIA DA COMPUTAÇÃO ............................................................................................................ 24

4.1 MODELAGEM ONTOLÓGICA PARA UM CURSO DE GRADUAÇÃO....................................................... 24

4.2 CONSTRUÇÃO DE INSTÂNCIAS........................................................................................................ 31

5 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. 3 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.

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 . 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

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

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

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 7

Conceito C 6 8 8

Conceito D 7 7

O NAC é manipulado no módulo de acompanhamento da arquitetura do ACAvA,

assunto tratado na seção a seguir.

2ª atualização realizada em JAN/06

1ª atualização realizada em FEV/06

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

+setConceito()

+getConceito()

+updateConceito()

+deleteConceito()

+getListaConceito()

-IDConceito : int

-nomeConceito : string

Conceito

+setDisciplina()

+getDisciplina()

+updateDisciplina()

+deleteDisciplina()

+getListaDisciplina()

-idDisciplina : int

-nomeDisciplina : string

-etapaDisciplina : string

Disciplina

+setConceitoDisciplina()

+getConceitoDisciplina()

+getConceitoDisciplina()

+updateConceitoDisciplina()

+deleteConceitoDisciplina()

-IDConceito : int

-IDDisciplina : int

ConceitoDisciplina

+setConceitoDependencia()

+getConceitoDependencia()

+getConceitoDependencia()

+updateConceitoDependencia()

+deleteConceitoDependencia()

+getConceitoDependenciaParaMapaConceitual()

-IDConceitoPai : int

-IDConceitoFilho : int

ConceitoDependencia

+setCurso()

+getCurso()

+updateCurso()

+deleteCurso()

+getListaCurso()

-IDCurso : int

-nomeCurso : string

Curso

+setCursoDisciplina()

+getDisciplinaCurso()

+updateCursoDisciplina()

+deleteCursoDisciplina()

+getListaCursoDisciplina()

+getCursoDisciplina()

-IDCurso : int

-IDDisciplina : string

CursoDisciplina

+setAluno()

+getAluno()

+updateAluno()

+deleteAluno()

+getListaAluno()

-IDAluno : int

-nomeAluno : string

Aluno

+setAlunoCurso()

+getAlunoCurso()

+updateAlunoCurso()

+deleteAlunoCurso()

+getListaAlunoCurso()

-idAluno : int

-idCurso : int

AlunoCurso

+Exercicio()

+setExercicios()

+getExercicios()

+updateExercicio()

+deleteExercicio()

+getListaExercicio()

-idExercicio : int

-enunciadoExercicio : string

-RespostaAExercicio : char

-RespostaBExercicio : char

-RespostaCExercicio : char

-RespostaDExercicio : char

-RespostaEExercicio : char

-RespostaCorretaExercicio : char

Exercicio

+ConceitoExercicio()

+setConceitoExercicio()

+getConceitoExercicio()

+getConceitoExercicio()

+updateConceitoExercicio()

+deleteConceitoExercicio()

-idConceito : int

-idExercicio : int

ConceitoExercicio

+AlunoConceito()

+setNAC()

+getNAC()

+updateNAC()

+deleteNAC()

+getConceitoMaisEspecificoComMenorNAC()

+getNACGeralAluno()

+getNACAlunoPorMes()

-idAluno : int

-idConceito : int

-NAC : int

-dataNAC

AlunoConceito

Screen

+CorrigeExercicio()

+RegraNACExercicio()

+ClusterizaAlunos()

+exibeMensagem()

Controller

+autenticaUsuario()

+getUsuarioCurso()

-loginUsuario : string

-senhaUsuario : string

-privilegioUsuario : string

-cursoUsuario : int

Usuario

* 11 *

1

*

*1

*

1

*1

* 1 1 *

1

*

1*

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: int,

nomeConceito: String) Atualiza os dados de um conceito.

deleteConceito(idConceito) Exclui os dados de um conceito

getListaConceitos() 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,

idConceitoDependente, relacao)

Insere na tabela relacional um conceito e seu

conceito dependente. A variável relação na

codificação é fixa e indica pré-requisito ou pós-

requisito. É 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

idConceitoPai)

Dado o id do conceito pai (pós- requisitos), retorna

todos os conceitos que são filhos (pré-requisitos)

para este conceito.

getConceitoDependenciaFilho(int

idConceitoFilho)

Dado o id do conceito filho (pré-requisitos),

retorna todos os conceitos que são pais (pós-

requisitos) para este conceito.

updateConceitoDependencia(int

idConceitoPai, int idConceitoFilho)

Atualiza no banco de dados a relação entre dois

conceitos

deleteConceitoDependencia(int

idConceito)

Apaga do banco de dados a relação entre dois

conceitos

getConceitoDependenciaParaMapaConceit

ual(int idConceitoPai)

Dado um conceito Pai (conceito que será pós-

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,

idDisciplina)

Insere no banco o conceito e sua disciplina relacionada.

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 de uma determinada

disciplina.

getDisciplinaConceito(idConceito) Retorna todas as disciplinas, 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

idExercicio)

Retorna do banco de dados todos os conceitos relacionado

a um exercício, dado seu identificador.

getExercicioConceito(int

idConceito)

Retorna do banco de dados todos os exercícios relacionado

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

, etapaDisciplina)

Cadastra uma disciplina.

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,

idDisciplina)

Cadastra o relacionamento curso-disciplina.

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 e

professores.

privilegioUsuario:string Identifica se o usuario e aluno, professor ou administrador.

60

Usuario() Construtor da classe

autenticaUsuario(loginUsuario,

senhaUsuario)

Indica o privilégio do usuário, que pode ser professor, aluno

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 Cadastrar Conceitos

Overflow 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 Cadastrar Disciplinas

Overflow 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 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

Tabela A.3 - Especificação de Caso de Uso: Cadastrar Curso

Nome do Caso de

Uso Cadastrar Cursos

Overflow 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 Cadastrar Alunos

Overflow 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 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

Tabela A.5 - Especificacao de Caso de Uso: Login

Nome do Caso de

Uso Login

Overflow 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 Atores: Professor, Aluno e Administrador.

Pré-Condições

Outras Informações

73

Tabela A.6 - Especificação de Caso de Uso: Realizar Exercício

Nome do Caso de

Uso Realizar Exercícios

Overflow 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 Atualizar NAC

Overflow 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 refere-

se à 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

1. Padrões de projeto

1.1. Motivação e conceituação básica

1.2. Padrões GRASP

1.3. Padrões GoF

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 de

desenvolvimento de software

3. Testes

3.1. Conceitos de testes e testabilidade

3.2. Tipos de testes

3.3. Verificação e Validação de software

4. Qualidade de software

4.1. Conceitos básicos

4.2. Padrões de qualidade

4.2.1. ISO

4.2.2. CMM e CMMi

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

Conteúdo Programático

1. Fundamentos de Algoritmos

1.1. Noções intuitivas de problemas e

algoritmos

1.2. Formas de descrição de algoritmos

1.3. Exemplos de problemas elementares e

algoritmos associados

2. Programas e noções do processo de

compilação

2.1. Linguagens de programação

2.2. Programa-fonte, programa-objeto e

programa executável.

2.3. Transformação de algoritmos em

programas

2.4. Noções de documentação de

programas

2.5. Compilação e interpretação

2.6. Prática em ambiente de compilação C

(Windows e Linux)

3. Sistemas numéricos e conversão entre

bases

3.1. Bases decimal, binária e hexadecimal.

3.2. Conversão entre as bases decimal e

binária

3.3. Conversão entre as bases decimal e

hexadecimal

4. Representação interna de dados

4.1. Noções de tipos primitivos de dados

(números e caracteres)

4.2. Representação de números 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)

5. Variáveis

5.1. Definição e iniciação de variáveis

5.2. Operadores aritméticos

5.3. Expressões aritméticas

5.4. Prática em ambiente de compilação C

6. Estruturas de decisão

6.1. Operadores relacionais

6.2. Estrutura do tipo if... else

6.3. Estrutura com múltiplas seleções

(switch... case).

6.4. Prática em ambiente de compilação C

7. Controle de fluxo

7.1. Fluxos de execução em programas

7.2. Laços do tipo while

7.3. Laços do tipo do...while

7.4. Laços do tipo for

7.5. Alteração de fluxos via break, continue

e goto.

7.6. Prática em ambiente de compilação C

8. Alocação dinâmica de memória

8.1. Noções de organização de programas

em tempo de execução

8.2. Funções para alocação dinâmica

(malloc e free)

8.3. Noções de aritmética de ponteiros

8.4. Prática em ambiente de compilação C

9. Funções e procedimentos

9.1. Conceitos básicos de funções e

procedimentos: parâmetros, variáveis

locais e globais, retorno.

9.2. Passagem por valor e por referência

9.3. Prática em ambiente de compilação C

10. Vetores

10.1. Declaração estática e dinâmica de

vetores

10.2. Iniciação de vetores

10.3. 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

11.3. Arquivos binários

11.4. Manipulação de arquivos

11.5. Prática em ambiente de compilação C

12. Registros

12.1. Declaração e iniciação de registros

12.2. Vetores de registros

12.3. Arquivos com registros

83

Técnicas de Desenvolvimento de Algoritmos 2a Etapa - Ementa 2006

Conteúdo Programático

1. Medidas de complexidade de

algoritmos

1.1. Medidas experimentais de

eficiência de algoritmos

1.2. Cotas superiores e a notação O (.).

1.3. Exemplos elementares de análise O

(.).

1.4. Cotas inferiores e a notação Ω (.).

1.5. Otimalidade de algoritmos

2. Noções de corretude de algoritmos

2.1. Pré e pós-condições

2.2. Invariantes de loops

2.3. Exemplos elementares de provas

de corretude

3. Recursividade e divisão-e-conquista

3.1. Algoritmos recursivos x algoritmos

iterativos

3.2. Exemplos elementares de

algoritmos recursivos

3.3. Análise de algoritmos recursivos

(recorrências básicas)

3.4. Conversão de algoritmos recursivos

para iterativos

3.5. Paradigma de divisão-e-conquista

3.6. Relação entre divisão-e-conquista e

recursividade

3.7. Exemplos de aplicação de divisão-

e-conquista, com análise.

4. Backtracking

4.1. Algoritmo geral de backtracking

4.2. Aplicação em problemas clássicos:

labirinto, jogos de tabuleiro, palavras-

cruzadas.

4.3. Eficiência de algoritmos baseados

em backtracking

5. Estruturas de dados básicas

5.1. Pilhas (em vetor)

5.1.1. Operações básicas

5.1.2. Aplicações

5.2. Filas (em vetor)

5.2.1. Operações básicas

5.2.2. Aplicações

5.3. Listas ligadas simples

5.3.1. Alocação dinâmica de

estruturas

5.3.2. Operações básicas

5.3.3. Aplicações

6. Algoritmos de busca

6.1. Busca seqüencial

6.1.1. Vetores

6.1.2. Listas ligadas

6.1.3. Análise

6.2. Busca binária e sua análise

7. Algoritmos de ordenação

7.1. Cota inferior para ordenação

baseada em comparação Ω (nlogn)

7.2. Algoritmos clássicos (em vetores)

7.2.1. Seleção

7.2.2. Inserção

7.2.3. Bubblesort

7.2.4. Mergesort

7.2.5. Heapsot

7.2.6. Quicksort

7.3. Análise de pior caso para os

algoritmos clássicos de ordenação

baseados em comparações

7.4. Algoritmo Radixsort

8. Busca de padrões em strings

8.1. Problema da busca de padrões em

strings e aplicações

8.2. Algoritmo de força bruta

8.3. Algoritmo de Karp-Rabin

8.4. Algoritmo de Knuth-Morris-Pratt

(KMP)

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

Conteúdo Programático

1. 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

2. Estruturas Lineares

2.1. Listas

2.1.1. Especificação do tipo de dado

abstrato Lista

2.1.2. Tipos de listas

2.1.3. Padrão de projeto Iterator e

percurso em listas

2.1.4. Implementação e análise de

eficiência

2.1.5. Implementação de listas via

STL (Standard Template Library)

2.1.6. Aplicações

2.2. Pilhas

2.2.1. Especificação do tipo de dado

abstrato Pilha

2.2.2. Implementação (vetor/lista) e

análise de eficiência

2.2.3. Implementação de pilhas via

STL

2.2.4. Aplicações

2.3. Filas

2.3.1. Especificação do tipo de dado

abstrato Fila

2.3.2. Implementação (vetor/lista) e

análise de eficiência

2.3.3. Implementação de filas via

STL

2.3.4. Aplicações

2.4. Deques

2.4.1. Especificação do tipo de dado

abstrato Deque

2.4.2. Implementação (vetor/lista) e

análise de eficiência

2.4.3. Implementação de deques via

STL

2.4.4. Aplicações

3. Tabelas de Hashing

3.1. Especificação do tipo de dado

abstrato Tabela de Hashing

3.2. Funções de hashing

3.3. Resolução de colisão via

endereçamento aberto

3.4. Resolução de colisão via estruturas

ligadas

3.5. Bucket hashing e hashing

extensível

3.6. Implementação e análise de

eficiência

3.7. Implementação de hashing via STL

3.8. Aplicações

4. Árvores binárias

4.1. Especificação do tipo de dado

abstrato Árvore Binária

4.2. Percursos em árvores

4.3. Padrão de projeto Visitor e

percurso em árvores

4.4. Árvores binárias de busca

4.5. Heaps e o algoritmo de ordenação

Heapsort

4.6. Estratégias de balanceamento

(AVL,Splay)

4.7. Implementação e análise de

eficiência

4.8. Aplicações

5. Á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 e análise de

eficiência

5.6. Aplicações

86

Linguagem de programação I 3a Etapa - Ementa 2006

Conteúdo Programático

1. Teoria elementar de tipos

1.1. Classificação de tipos:

fundamentais e compostos

1.2. Subtipos

1.3. Equivalência de tipos

1.4. Tipos monomórficos e polimórficos

1.5. Promoção e conversão de tipos

1.6. Lvalues

1.7. Name spaces

2. Estruturação elementar de classes e

objetos

2.1. Classes como tipos derivados

2.2. Atributos e funções (funções

isoladas e funções-membro)

2.3. Construtores

2.4. Objetos e o processo de

instanciação

2.5. Ponteiros para objetos

2.6. Destruidores

2.7. Herança Simples

3. Encapsulamento e acesso

3.1. Controle de acesso: estruturas x

classes

3.2. Especificadores de acesso: private,

protected e public

3.3. Declarações friend

4. Acúmulo (overloading) de funções e

operadores

4.1. Conceito de acúmulo

4.2. Acúmulo de funções

4.3. Declaração de operadores

4.4. Acúmulo de operadores

4.5. Mecanismo de acesso na presença

de acúmulo

5. 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

Métodos Virtuais

5.5. Métodos virtuais e herança simples

5.6. Métodos virtuais e herança múltipla

5.7. Classes-base virtuais e métodos

virtuais

5.8. Renaming

5.9. Dispatching: simples, duplo e

múltiplo, RTTI

6. Tratamento de exceções

6.1. Mecanismos de exceções em C++

6.2. Regiões críticas e blocos try-catch

6.3. 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

7. Streams

7.1. Conceito de stream

7.2. Hierarquia de streams C++

7.3. Streams de entrada

7.4. Streams de saída

8. Templates

8.1. Tipos parametrizados

8.2. Polimorfismo universal paramétrico

8.3. Templates de função

8.4. Templates de classe

8.5. STL ( Standard Template Library )

87

Organização e Arquitetura de Computadores 3a Etapa - Ementa 2006

Conteúdo Programático

1. 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

2. Unidade Central de Processamento

2.1. 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

3. 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, políticas de

escrita/leitura, coerência

4. Barramentos

4.1. Tipos de barramento

4.2. Sinalização e controle

5. 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

6. 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

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

4.4.1. Multiplicação de cadeias de matrizes

4.4.2. Maior subseqüência comum

4.4.3. Árvores de busca ótimas

5. 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

5.4.1. Problema de seleção de atividades

5.4.2. Código de Huffman

6. 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

1. Processamento Gráfico

1.1. Conceito de Processamento Gráfico

1.2. Áreas de Processamento Gráfico:

computação gráfica, processamento de

imagens, visão computacional e

modelagem

1.3. Exemplos de problemas de

computação gráfica

1.4. Exemplos de problemas de

processamento de imagens

1.5. Exemplos de problemas de visão

computacional

1.6. Exemplos de problemas de modelagem

1.7. Suporte de hardware e software para

processamento gráfico

2. 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 e

plasma

2.3. Dispositivos de entrada gráfica

2.4. Integração entre dispositivos gráficos

2.5. Hardware de alto desempenho

3. Bibliotecas Gráficas

3.1. Pipeline básica da computação gráfica

3.2. Organização básica de bibliotecas

gráficas

3.3. Integração com hardware

3.4. Estrutura das principais bibliotecas

gráficas: DirectX, OpenGL,

QuickDraw(Quesa), Java2D/3D.

4. Modelagem Poligonal

4.1. Malhas poligonais

4.2. Resolução de malhas

4.3. Simplificação e refinamento

4.4. Estruturas de dados para malhas

poligonais

4.5. Geração de malhas poligonais:

modelagem manual, scanners

tridimensionais, métodos

procedimentais.

5. Curvas e Superfícies

5.1. Curvas parametrizadas

5.2. Curvas de Bézier

5.3. Curvas Splines

5.4. Superfícies parametrizadas

5.5. Superfícies de Bézier

5.6. Superfícies Splines

6. Transformações Geométricas

6.1. Sistema de coordenadas homogêneas

6.2. Transformação bidimensionais rígidas

6.3. Transformações tridimensionais rígidas

6.4. Deformações

7. Câmeras e Visualização

7.1. Parâmetros intrínsecos e extrínsecos

de câmeras

7.2. Projeções ortogonal e perspectiva

7.3. Transformação de vista

7.4. Remoção de superfícies ocultas e

clipping

7.5. Rasterização poligonal

8. Fundamentos de Teoria da Cor

8.1. Natureza física da cor

8.2. Amostragem e reconstrução de cores

8.3. Espaços de cores: CIE, RGB, HSV e

CMYK

8.4. Conversão entre espaços de cores

8.5. Quantização de cores

9. Modelos de iluminação

9.1. Interação entre luz e material

9.2. Iluminação e shading

9.3. Modelo de iluminação de Lambert

9.4. Modelo de iluminação de Phong

9.5. Shading Flat, Phong e Gouraud

10. Geração e Mapeamento de Textura

10.1. Espaços de textura

10.2. Geração de textura por ruído

10.3. Geração de textura por displacement

e bump mapping

10.4. Mapeamento de texturas

bidimensionais

10.5. Mapeamento de texturas

tridimensionais

90

Introdução a engenharia de software 4a Etapa – Etapa 2006

Conteúdo Programático

1. Processo de desenvolvimento de

software

1.1. Processo de engenharia de sistemas

1.2. Modelos de processo de software

1.3. Especificação de software

1.4. Projeto e implementação

1.5. Validação de software

1.6. Evolução de software

1.7. Qualidade de software

2. Gerenciamento de projetos

2.1. Atividades de gerenciamento

2.2. Planejamento de projeto

2.3. Programação de projeto

2.4. Gerenciamento de riscos

2.5. Noções de estimativa de custos

3. 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. Verificação e validação

5.1. Planejamento de verificação e

validação

5.2. Testes de detecção de defeitos

5.3. Testes de integração

5.4. Testes orientados a objetos

5.5. Validação de sistemas críticos

6. Qualidade de software

6.1. Noções de medição e métricas de

software

6.2. Qualidade de processo e de produto

6.3. Medições de processo

6.4. Noções de modelos de maturidade

7. Evolução de software

7.1. Sistemas legados

7.2. Evolução de arquitetura

7.3. Reengenharia de software

7.4. Reengenharia de dados

91

Linguagem de Programação II 4a Etapa – Ementa 2006

Conteúdo Programático

1. Características de linguagem

1.1. Histórico da linguagem

1.2. Vantagens e deficiências da linguagem

1.3. Comparação com outras linguagens

1.4. Geração de bytecodes e a

interpretação viam JVM (Java Virtual

Machine)

1.5. Integração com outras linguagens

2. Sintaxe básica

2.1. Tipos e operadores

2.2. Declaração de variáveis

2.3. Comandos condicionais (if, swtich-

case) e iteração(for,while, do-while)

2.4. Arrays

2.5. Organização básica de classes e

programas Java

3. Tratamento de exceções

3.1. Principais exceções

3.2. Detecção e recuperação de exceções

via try-catch

3.3. Tratamentos com finally

3.4. Lançamento de exceções via throw

3.5. Sinalização de exceções com throws

3.6. Construção de classes de exceção

4. Estruturação de classes

4.1. Atributos, métodos, construtores e

instanciação

4.2. Superclasses, sub-classes e o processo

de herança em Java

4.3. Polimorfismo

4.4. Declarações static e final

4.5. Modificadores de acesso: public,

protected, default e private

4.6. Classes abstratas

5. Interfaces

5.1. Declaração e implementação de

interfaces

5.2. Extensão de interfaces

5.3. Comparação com classes abstratas

6. Pacotes

6.1. Organização e implementação de

pacotes

6.2. Acesso a pacotes

6.3. Organização dos pacotes básicos da

linguagem Java: java.lang, java.util.

java.io, java.net, java.awt e

javax.swing

7. Classes básicas e utilitárias

7.1. Pacote java.lang ( classes básicas )

7.2. Pacote java.util ( classes utilitárias )

8. Tratamento de E/S

8.1. Modelo de streams

8.2. Pacote java.io

8.3. Tratamento de arquivos

9. Fundamentos de programação

concorrente e distribuída

9.1. Programação com threads

9.2. Métodos de sincronização e a

declaração synchronized

9.3. Noções do modelo cliente-servidor e

sockets

9.4. Pacote java.net

10. Interfaces gráficas

10.1. Pacote java.awt

10.2. Pacotes javax.swing

10.3. Modelo MVC em componentes Swing

11. Applets

11.1. Modelo de execução de applets e

políticas de segurança

11.2. Construção de applets

11.3. Integração com páginas HTML

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

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

2. 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

5.1. Algoritmo de Dijkstra

6. Planaridade

6.1. Teorema de Kuratowsky

7. Grafos eulerianos

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

8.2.1. Teorema de Hall

8.2.2. Método Húngaro

9. 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

Conteúdo Programático

1. Alfabetos, palavras e linguagens

1.1. Alfabetos

1.2. Palavras

1.2.1. Palavras finitas e infinitas

1.2.2. Operações básicas

1.3. Linguagens

1.3.1. Conceitos básicos

1.3.2. Morfologia, sintaxe e semântica

2. Gramáticas

2.1. Definição

2.2. Derivação

2.3. Representação e implementação

3. Hierarquia de Chomsky

3.1. Aspectos históricos e relações com

linguagens naturais

3.2. Linguagens regulares

3.3. Linguagens livres de contexto

3.4. Linguagens sensíveis ao contexto

3.5. Linguagens recursivamente

enumeráveis

4. Linguagens regulares e autômatos

finitos

4.1. Abordagem operacional

4.1.1. Autômatos finitos e determinísticos

4.1.2. Autômatos finitos não-determinístiocs

4.1.3. Autômatos finitos não-determinísticos

com transições vazias

4.1.4. Minimização de estados

4.2. Abordagem denotacional

4.2.1. Expressões regulares

4.2.2. Relação entre expressões regulares e

autômatos finitos

4.3. Abordagem axiomática

4.3.1. Gramática regulares

4.3.2. Relação com expressões regulares e

autômatos finitos

4.4. Aplicações e aspectos de

implementação

4.4.1. Aplicações

5. Linguagens livres de contexto e

autômatos à pilha

5.1. Gramáticas livres de contexto

5.1.1. Derivações à esquerda e à direita

5.1.2. Recursão à esquerda e à direita

5.1.3. Ambigüidade

5.1.4. Formas normais de Chomsky e

Greibach

5.2. Autômatos à pilha

5.3. Algoritmos de reconhecimento

5.3.1. Algoritmo com autômato à pilha

5.3.2. Algoritmo CYK (Cocke-Younger-Kasami)

5.3.3. Algoritmo de Early

5.3.4. Aplicações e aspectos de implementação

5.3.5. Aplicações

6. Máquinas de Turing

6.1. Definições

6.2. Tipos de máquinas de Turing e

equivalências

6.2.1. Máquinas com fita simples ilimitada

6.2.2. Máquinas com fita simples ilimitada

6.2.3. Máquinas com múltiplas fitas

6.3. Máquinas de Turing como reconhecedores

de linguagens

7. Linguagens sensíveis ao contexto e

Máquina de Turing com fita limitada

7.1. Gramáticas sensíveis ao contexto

7.2. Algoritmos de reconhecimento com

Máquinas de Turing com fita limitada

7.3. Aplicações

8. Linguagens recursivamente

enumeráveis e Máquina de Turing

8.1. Linguagens recursivas e

recursivamente enumeráveis

8.2. Gramáticas irrestritas

8.3. Algoritmos de reconhecimento com

Máquinas de Turing

9. 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

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

6. 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. Hardware para computação gráfica

1.1. Monitores

1.2. Placas de vídeo e aceleradoras

gráficas

1.3. Principais dispositivos de entrada

(mouse, mesas digitalizadoras,

scanners,etc)

1.4. Impressoras e plotters

2. Cor

2.1. Noções sobre o sistema visual

humano

2.2. Significado físico de cor

2.3. Sistemas de representação de cor

2.4. Transformações entre sistemas de

representação

2.5. Quantização de cores

2.6. Dithering

3. Processamento bidimensional

3.1. Pipeline bidimensional

3.2. Modelamento bidimensional

3.3. Algoritmos para traçado de

primitivas: segmentos de retas e

círculos

3.4. Curvas

3.5. Transformações geométricas

3.6. Clipping

3.7. Bibliotecas para processamento

bidimensional

4. 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 para processamento

tridimensional

5. Iluminação

5.1. Iluminação local e global

5.2. Modelos de iluminação local

5.2.1. Modelo de Phong

5.3. Modelos de ilimunação global

5.3.1. Radiosidade

6. Texturas

6.1. Texturização por mapeamento

inverso

6.2. Texturização tridimensional

6.3. Síntese de texturas

7. Processamento da imagem

7.1. Conceito de imagem

7.2. Filtros

8. Animação

8.1. Processo de animação por

computador

8.2. Quadros( frames) e quadros-chave

8.3. Interpolação de quadros

8.4. Warping e morphing

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