DEPARTAMENTO DE POLÍTICAS DO ENSINO SUPERIOR
COORDENAÇÃO DAS COMISSÕES DE ESPECIALISTAS DE ENSINO
COMISSÃO DE ESPECIALISTAS DE ENSINO DE COMPUTAÇÃO E INFORMÁTICA - CEEInf

DIRETRIZES CURRICULARES
DE CURSOS DA ÁREA DE
COMPUTAÇÃO E INFORMÁTICA

Introdução

Essas Diretrizes Curriculares são o resultado de discussões realizadas no âmbito da Sociedade Brasileira de Computação, através do Workshop de Educação em Computação (WEI/98), das discussões realizadas no Seminário dos Consultores do SESu/MEC (Belo Horizonte, agosto/1998), das contribuições enviadas ao SESu/MEC em decorrência do Edital Nº 4, das discussões realizadas nas Escolas Regionais de Computação, das discussões entre professores via internet mas, mais diretamente das contribuições e revisões feitas pelos seguintes professores: Edit Grassiani Lino de Campos, Paulo Blauth Menezes, João Carlos Setubal, Ricardo Anido, Flavio Bortolozzi, Ana Carolina Salgado, Antonio G. Thomé, Miriam Sayão, Sonia Ogiba, Raul Sidnei Wazlawick, Tarcísio Pequeno, Geber Ramalho, Paulo Alberto de Azeredo, João Netto, Flávio Wagner, Carlos Eduardo Pereira,  Cesar A. C. Teixeira, Joao Paulo Kitajima, Nelson Lopes Duarte Filho, Celso Maciel da Costa, Simão Sirineu Toscani, Maria Izabel Cavalcanti Cabral, Luiz Fernando Gomes Soares, Juergen Rochol, Jean-Marie Farines, Maria das Graças Bruno Marietto, Claudia M Bauzer Medeiros, Lia Goldstein Golendziner, Hans Kurt E. Liesenberg, Maria Alice Ferreira, Arndt von Staa, Paulo César Masiero, Jacob Scharcanski, José Carlos Maldonado, Leila Ribeiro, Jaelson F. B. Castro, Roberto da Silva Bigonha, Rafael Dueire Lins, Aluizio Arcela, Homero Luiz Piccolo, Carla M.D.S. Freitas, Claudio Kirner, Valdemar W.Setzer, Maria de Fátima Ramos Brandão, Antonio Carlos dos Santos, Roshangela Freitas Bastani e Afonso Inácio Orth. A Coordenação da CEEInf/SESu, através do Prof. Daltro José Nunes, teve a função de coordenar a elaboração dessas Diretrizes, mantendo o texto estruturado e consistente. 
As premissas para elaboração das Diretrizes Curriculares são: 
•	as Instituições de Ensino Superior possuem um corpo docente de qualidade capaz de, a partir das Diretrizes Curriculares, produzir currículos plenos de qualidade; 
•	deve existir no SESu/MEC um meio capaz de avaliar a qualidade dos currículos plenos, e 
•	as Diretrizes Curriculares devem ser simples tecnicamente para que a sociedade civil possa entender o conceito de Computação e Informática e de como são formados os recursos humanos para atender suas necessidades. Assim, as Diretrizes Curriculares tem também um efeito pedagógico. 
A metodologia para concepção dos currículos plenos é a seguinte: 
As Diretrizes Curriculares contém em seu item (3) uma estrutura curricular abstrata, organizada de tal forma que as Instituições de Ensino Superior possam, a partir dessa estrutura, exercer a criatividade e conceber currículos plenos diversificados. Esta estrutura abstrata pode ser vista como uma "especificação de requisitos" que, partindo dela, por um processo de detalhamentos sucessivos, pode-se chegar a uma rede de disciplinas distribuídas no tempo, o currículo pleno a ser executado por um corpo de professores. Essas Diretrizes contém também, em seu item (4), orientações de como detalhar a estrutura abstrata, dependendo do perfil do curso desejado. Deve-se lembrar que o processo de detalhamento não garante um currículo pleno de qualidade.
Essas Diretrizes Curriculares devem ser revisadas em cinco anos, a partir da data de sua aprovação pelo Conselho Nacional de Educação.

DIRETRIZES CURRICULARES DE CURSOS DA 
ÁREA DE COMPUTAÇÃO E INFORMÁTICA

Estrutura das Diretrizes Curriculares: 
1.	Denominação da área de formação de recursos humanos. 
Justifica a denominação de Computação e Informática para a área de formação de recursos humanos. 
2.	Objetivos da formação de recursos humanos na área de Computação e Informática. 
Contém uma descrição das necessidades sociais da formação de recursos humanos na área de Computação e Informática. 
3.	Estrutura curricular abstrata. 
Contém uma descrição das áreas de formação que compõem os currículos dos cursos de graduação da área de computação, incluindo, para cada uma delas, uma descrição das matérias (ou áreas do conhecimento) afins. 
3.1 Área de formação básica 
3.1.1 Ciência da Computação
3.1.1.1 Programação 
3.1.1.2 Computação e Algoritmos
3.1.1.3 Arquitetura de Computadores
3.1.2 Matemática
3.1.3 Física e Eletricidade
3.1.4 Pedagogia
3.2 Área de formação tecnológica 
3.2.1 Sistemas Operacionais, Redes de computadores e Sistemas Distribuídos
3.2.2 Compiladores 
3.2.3 Banco de Dados 
3.2.4 Engenharia de Software 
3.2.5 Sistemas Multimídia, Interface homem-máquina e Realidade Virtual 
3.2.6 Inteligência Artificial 
3.2.7 Computação Gráfica e Processamento de Imagens 
3.2.8 Prática do ensino de computação 
3.3 Área de formação complementar 
3.4 Área de formação humanística 
4. Metodologia. 
Contém uma descrição de como as diversas matérias devem ser detalhadas, refinadas, para formar cada um dos perfis dos cursos da área. 
5. Tempo mínimo para formação de recursos humanos na área de computação e informática. 

1. Denominação da área de formação de recursos humanos 
Esta área, do ponto de vista da formação de recursos humanos e do desenvolvimento científico e tecnológico, nos países de língua inglesa e no Brasil, é denominada de (Ciência da) Computação, enquanto que nos demais países é denominada de Informática. Ainda no Brasil, a sociedade costumou chamar de Informática tudo que está relacionado ao computador, especialmente suas aplicações. A denominação de computação, no contexto da formação de recursos humanos, é de fato mais adequada, uma vez que a área tem como ciência básica a ciência da computação e expressa melhor a função dos computadores que é a de computar. Assim, tudo que se passa no interior de um computador é uma computação, independente do objeto sendo computado: informação, imagem, gráfico, texto, som, números etc. Com vistas a cobrir as duas visões, a área recebeu a denominação de Computação e Informática. 
2. Objetivos da formação de recursos humanos na área 
Os cursos da área de computação e informática têm como objetivos a formação de recursos humanos para o desenvolvimento tecnológico da computação (hardware e software) com vistas a atender necessidades da sociedade, para a aplicação das tecnologias da computação no interesse da sociedade e para a formação de professores para o ensino médio e profissional. Entre as necessidades da sociedade que podem ser atendidas com o auxílio de computadores pode-se citar: armazenamento de grandes volumes de informações dos mais variados tipos e formas e sua recuperação em tempo aceitável; computação de cálculos matemáticos complexos em tempo extremamente curto; comunicação segura, rápida e confiável; automação, controle e monitoração de sistemas complexos; computação rápida de cálculos repetitivos envolvendo grande volume de informações; processamento de imagens de diferentes origens; jogos e ferramentas para apoio ao ensino, etc. Exemplos de aplicações são encontrados na rotina diária de empresas (computação envolvendo informações econômicas, financeiras e administrativas geradas por atividades empresariais, industriais e de prestação de serviços); no processamento de imagens geradas por satélites para previsões meteorológicas; em atividades ligadas à área da saúde (em hospitais, consultórios médicos e em órgãos de saúde pública); em sistemas de controle de tráfego aéreo; na comunicação através da Internet; nos sistemas bancários, etc. A computação é para o homem uma ferramenta indispensável e fundamental na vida moderna. 
No contexto de uma formação superior no campo da Informática e de seus processos de geração e automação do conhecimento, há que se considerar a importância de currículos que possam, efetivamente, preparar pessoas críticas, ativas e cada vez mais conscientes dos seus papéis sociais e da sua contribuição no avanço científico e tecnológico do país. O conteúdo social, humanitário e ético dessa formação deverá orientar os currículos no sentido de garantir a expansão das capacidades humanas em íntima relação com as aprendizagens técnico-científicas no campo da Computação e Informática. Trata-se pois, de uma formação superior na qual os indivíduos estarão, também, sendo capacitados a lidar com as dimensões humanas e éticas dos conhecimentos e das relações sociais. Condição essa inseparável quando uma das finalidades fundamentais da Universidade e do ensino superior é preparar as futuras gerações de modo crítico e propositivo, visando a melhoria da vida social, cultural e planetária. 
3. Áreas de formação que compõem os cursos da área de Computação e Informática. 
Os currículos dos cursos da área de computação e informática podem ser compostos por quatro grandes áreas de formação: 
•	formação básica, que compreende os princípios básicos da área de computação, a ciência da computação, a matemática necessária para defini-los formalmente, a física e eletricidade necessária para permitir o entendimento e o projeto de computadores viáveis tecnicamente e a formação pedagógica que introduz os conhecimentos básicos da construção do conhecimento, necessários ao desenvolvimento da prática do ensino de computação. 
•	formação tecnológica (também chamada de aplicada ou profissional) que aplica os conhecimentos básicos no desenvolvimento tecnológico da computação 
•	formação complementar que permite uma interação dos egressos dos cursos com outras profissões e a 
•	formação humanística que dá ao egresso uma dimensão social e humana. 

3.1 Área de formação básica 
A formação básica tem por objetivo introduzir as matérias necessárias ao desenvolvimento tecnológico da computação. O principal ingrediente desta área é a ciência da computação que caracteriza o egresso como pertencente à área de computação. A maioria das matérias tecnológicas são aplicações da ciência da computação. São matérias de formação básica dos cursos da área de computação: a ciência da computação, a matemática, a física e eletricidade e a pedagogia. 
3.1.1 Ciência da computação 
O ponto central desta matéria está nos conceitos de máquina e algoritmo. Segundo os autores clássicos da ciência da computação, algoritmo é um conjunto de instruções de uma linguagem, interpretado por uma máquina real ou abstrata. Dado uma máquina e um problema, a solução é dada por um algoritmo. Não se pode, então, dissociar o conceito de algoritmo do conceito de máquina. Sem máquina não há algoritmo. Um egresso de um curso de computação raciocina de forma diferente de outros profissionais porque possui a habilidade de construir algoritmos como soluções de problemas. A Ciência da Computação é a área mais importante na composição dos currículos dos cursos pois, tem relação direta com os objetivos da formação de recursos humanos. As sub-áreas são: 
3.1.1.1 Programação 
A programação, entendida como programação de computadores, é uma atividade voltada à solução de problemas. Nesse sentido ela está relacionada com uma variada gama de outras atividades como especificação, projeto, validação, modelagem e estruturação de programas e dados, utilizando-se das linguagens de programação propriamente ditas, como ferramentas. 
Ao contrário do que se apregoava há alguns anos atrás, a atividade de programação deixou de ser uma "arte" para se tornar uma ciência, envolvendo um conjunto de princípios, técnicas e formalismos que visam a produção de software bem estruturado e confiável. Cite-se, dentre estes, os princípios da abstração, do encapsulamento e as técnicas de modularização e de programação estruturada. 
Portanto o estudo de programação não se restringe ao estudo de linguagens de programação. As linguagens de programação constituem-se em uma ferramenta de concretização de software, que representa o resultado da aplicação de uma série de conhecimentos que transformam a especificação da solução de um problema em um programa de computador que efetivamente resolve aquele problema. 
No estudo de linguagens de programação deve ser dada ênfase aos aspectos funcionais e estruturais das linguagens de programação, em detrimento aos detalhes de sintaxe. Conceitos como o significado de associação, avaliação, atribuição, chamada de procedimento, envio de mensagens, passagem de parâmetros, herança, polimorfismo, encapsulamento, etc. devem ser enfatizados. O estudo de linguagens deve ser precedido do estudo dos principais paradigmas de programação, notadamente a programação imperativa, a funcional, a baseada em lógica e a orientada a objetos. 
O desenvolvimento de algoritmos, juntamente com o estudo de estruturas de dados deve receber especial atenção na abordagem do tema programação. Igualmente deve ser dada ênfase ao estudo das técnicas de especificação, projeto e validação de programas. Um excelente campo para o exercício da programação é constituído pelo estudo de pesquisa em tabelas e de técnicas de ordenação. 
3.1.1.2 Computação e Algoritmos 
Os programas de computador (ou "software") estão alicerçados em três conceitos teóricos fundamentais: algoritmos, modelos de computação e linguagens formais. Um algoritmo é um método abstrato mas bem definido para resolução de um problema em tempo finito. A noção de algoritmo pressupõe a existência de algum tipo de máquina abstrata onde ele pode ser executado de forma automática. Chamamos de "modelos de computação" as diferentes máquinas abstratas sobre as quais os algoritmos são formulados. A ponte entre esses dois conceitos é o conceito de linguagem formal, que permite a expressão de um determinado algoritmo para um determinado modelo de computação; essa expressão recebe o nome de "programa". 
O estudo dos algoritmos e modelos de computação permite abordar as seguintes questões fundamentais: quais são os limites teóricos do que pode e do que não pode ser resolvido através dos computadores (ou seja, o que é computável)? Dentro daquilo que é computável, quais são os algoritmos e estruturas de dados mais eficientes? Como caracterizar a eficiência (ou complexidade) dos algoritmos? Como se pode projetar e analisar um algoritmo eficiente? Deve-se notar que o alto nível abstrato em que esses estudos são feitos proporciona conclusões que transcendem a evolução tecnológica vertiginosa pela qual estão passando os computadores modernos. 
O estudo dos aspectos sintáticos e semânticos das linguagens formais é fundamental para a atividade de programação, uma vez que todas as linguagens de programação são linguagens formais. Além disso, existem na computação diversas outras situações que usam linguagens formais. Um bom exemplo é o conceito de expressão regular, que aparece com freqüência em processamento de textos. 
3.1.1.3 Arquitetura de Computadores 
O termo arquitetura de computadores refere-se às características existentes em um projeto de máquina para executar as tarefas escritas em alguma linguagem de programação (estudo das máquinas que executam programas, ou seja computadores). O conhecimento desta área é fundamental não apenas para aqueles que vão projetar novos computadores, mas também para aqueles que os utilizarão. O conhecimento dos princípios básicos de funcionamento dos computadores e da tecnologia embutida nestes permite um uso mais eficiente dos recursos e a determinação das classes de problemas que podem ser solucionadas com a tecnologia presente. O projeto de um computador envolve vários aspectos incluindo: 
a. Conjunto de instruções 
b. Organização funcional 
c. Projeto lógico 
d. Implementação
O projeto da arquitetura visa otimizar uma máquina ao longo destes níveis. O conjunto de instruções é aquilo que é visível ao programador (ou compilador) no desenvolvimento dos programas. Define as várias formas de endereçamento dos dados, capacidades específicas para manipulação para algumas estruturas de dados e as instruções que podem compor um determinado programa. O conjunto de instruções forma a linha limite entre o hardware e o software, sendo necessário o conhecimento sobre software básico para o projeto de hardware. A especificidade de um determinado conjunto de instruções pode gerar máquinas otimizadas a processar um determinado tipo específico de problema. 
A organização funcional provê os blocos materiais necessários à interpretação e execução do conjunto de instruções. Classicamente um processador é dividido em Unidade de Controle, Fluxo de dados e Sistema de memória. Cabe ressaltar que embora esta divisão de funções seja muito utilizada, não é o único particionamento funcional possível de ser utilizado. Inclui os aspectos de alto nível no projeto de computadores, como o sistema de memória, as estruturas de barramentos e comunicação com periféricos e as características internas da unidade central de processamento. Técnicas utilizadas como buferização de instruções, pipeline e outras estão aqui incluídas. Na organização funcional estão também o princípio de funcionamento dos diversos periféricos e da sua comunicação com a unidade de processamento. (Inclui-se aqui os tratadores de interrupções, Acesso direto à memória e outras formas de aquisição de dados externos à unidade central de processamento). 
O projeto lógico refere-se ao projeto dos diversos elementos funcionais em lógica digital, como as operações aritméticas (Unidades lógica e aritmética) e sistemas algorítmicos que ficam embutidos no processador (como tratamento de interrupções) e dos diversos elementos componentes do processador, memória e periféricos. Elementos da álgebra de conjuntos, em especial a álgebra booleana e técnicas de projeto lógico e otimização estão aqui incluídos. Técnicas de síntese automática pertencem a este domínio, e uma idéia das mesmas contribui para a compreensão da rapidez de projeto e das novas implementações que aparecem no mercado. Para as unidades de controle, as técnicas de interpretação em níveis estão aqui incluídas, como controladores condicionais, VLIW, e microprogramação clássica entre outros. 
A implementação contempla projetos de circuitos integrados, nas mais diversas tecnologias, consideração de potência, encapsulamento e geração de protótipos. A implementação faz a interface com a área de engenharia elétrica, geradora das tecnologias que permitem esta implementação. 
A otimização de uma arquitetura requer familiaridade com técnicas de áreas específicas, como a avaliação de desempenho, sistemas operacionais, técnicas e sistemas digitais e concepção de circuitos. 
3.1.2 Matemática 
A matemática, para a área de computação, deve ser vista como uma ferramenta a ser usada na definição formal de conceitos computacionais (linguagens, autômatos, métodos etc.). Os modelos formais permitem definir suas propriedades e dimensionar suas instâncias, dadas suas condições de contorno. Considerando que a maioria dos conceitos computacionais pertencem ao domínio do discreto, a matemática discreta (ou também chamada álgebra abstrata) é fortemente empregada. A lógica matemática é também uma ferramenta fundamental na definição de conceitos computacionais. Teoria das Categorias possui construções cujo poder de expressão não possui, em geral, paralelo em outras teorias . Esta expressividade permite formalizar idéias mais complexas de forma mais simples bem como propicia um novo ou melhor entendimento das questões relacionadas com toda a Ciência da Computação. Como Teoria das Categorias é uma ferramenta nova, para exemplificar, vale a pena estabelecer um paralelo com a linguagem Pascal: Teoria das Categorias está para a Teoria dos Conjuntos assim como Pascal está para a linguagens Assembler. 
Muitos conceitos computacionais se baseiam em modelos matemáticos bem conhecidos como grafos e aritmética intervalar. A análise combinatória está na base do estudo de algoritmos de otimização para problemas combinatórios, tais como problemas em grafos. 
A matemática sobre os reais, matemática do contínuo (cálculo diferencial e integral, álgebra linear, geometria analítica, cálculo numérico, etc.), tem importância em áreas específicas da computação. Nas áreas de sistemas operacionais, redes, complexidade de algoritmos, computação gráfica, processamento de imagens, simulação, física, eletricidade e eletrônica etc. a matemática do contínuo é em maior ou menor grau empregada. A área de estatística tem aplicações na própria área de computação (redes, sistemas operacionais etc.) como na solução de problemas reais que envolvam a aplicações da computação. 
3.1.3 Física e Eletricidade 
A física, em especial os conceitos de eletricidade, é uma ferramenta usada na área de computação, com dois propósitos principais: 
- Dar ciência dos modelos matemáticos e estatísticos usados na compreensão dos fenômenos que ocorrem nos computadores e na interligação destes. 
- Introduzir a visão científica, onde os modelos tentam expressar a realidade observada. 
Isto capacita o egresso a trabalhar com modelos abstratos, fundamental na área da computação, bem como compreender os avanços tecnológicos obtidos através da utilização/formulação de novos modelos. 
Aspectos relevantes da área da física que devem ser incluídos nos currículos podem ser classificados nos seguintes tópicos: 
a. Leis básicas da Eletricidade 
b. Representação matemática e Unidades de Medidas das Grandezas Elétricas 
c. Princípio de operação dos dispositivos semi-condutores 
d. Teoria Eletromagnética e Ondas 
e. Fenômenos ópticos 
As leis básicas da eletricidade visam dar a compreensão dos fenômenos e problemas envolvidos na evolução tecnológica da realização das máquinas computacionais. As leis básicas de corrente (nós) e tensão (malhas) dão também a compreensão necessária para as limitações de conectividade física, como barramentos e redes, entre subsistemas computacionais. 
O modelo matemático das grandezas elétricas, possibilita a compreensão dos fenômenos de modulação e interferência envolvidos em vários processos de comunicação de dados, reconhecimento de padrões e tratamento digital de sinais, estes utilizados largamente nos domínios de aplicação híbrida como robótica e biomédica. 
Os campos de teoria eletromagnética e ondas e operação dos semicondutores possibilitam a compreensão da atual realização dos dispositivos que implementam a lógica computacional, bem como as limitações da tecnologia atual e dos próximos anos. Além de, quando visto de forma mais profunda, possibilitar o projeto de máquinas computacionais (projeto VLSI e de lógica programável), a noção dos fenômenos envolvidos na tecnologia dos semicondutores e ondas possibilita aos egressos analisar os processos de breakdown tecnológico que advirão nos próximos anos. 
No campo da ótica, os conceitos de reflexão, difração e atenuação de determinadas faixas do espectro luminoso, permite ao futuro profissional compreender os limites envolvidos nas comunicações óticas e futuramente na realização da lógica computacional baseada nos princípios óticos. 
A profundidade dos conhecimentos apresentados varia em relação a atividade fim do profissional. Aqueles dedicados ao projeto e implementação de sistemas devem possuir uma abrangência maior destas áreas, em função da área tecnológica específica de atuação (e.g. microeletrônica, automação, comunicação de dados). Para os profissionais que atuam em áreas tecnológicas onde a base é a programação ou a teoria da computação, a compreensão destes fenômenos dá condições de acompanhar a evolução tecnológica e vislumbrar os grandes momentos de quebra de paradigma na construção e realização de sistemas computacionais. 
3.1.4 Pedagogia 
Rotineiramente traduzida como o domínio das técnicas, habilidades e metodologias, visando a transmissão de um determinado conhecimento - o educacional, a Pedagogia veio se consolidando na modernidade como "ciência da educação" que realiza uma reflexão sistemática acerca da prática educacional. Encontra-se integrada ao conjunto das chamadas "Ciências da Educação" tendo aí a especificidade de instrumento para a ação pedagógica. Quando referida às instituições escolares, a Pedagogia é conceituada como uma configuração de práticas que visam à construção e à produção de conhecimentos e saberes. Em linguagem contemporânea equivale dizer que a Pedagogia se refere à política da prática em aula, significando a expressão política da prática, o solo de uma ação que é intencional e que implica intervenção. Nesse sentido, a ciência pedagógica trata de promover as condições didático-pedagógicas-profissionais atenta à natureza histórica e socialmente construída daqueles conhecimentos e saberes, em um mundo continuamente em mudança. Como instrumento teórico e prático para a ação, se encontra, basicamente, constituída no entrelaçamento de duas amplas áreas ou campos, a saber: a) cultural, científica e ético-filosófica, abrangendo conhecimentos e saberes capazes de contribuírem para a contextualização social da ação pedagógica e das suas relações com as complexas formas pelas quais as aprendizagens e as identidades sociais são produzidas; b) didático-pedagógica, referindo-se a uma base de conhecimentos e saberes teóricos e práticos que possibilitam a compreensão da escola e sua configuração moderna; do ensino e seus dispositivos pedagógicos (tecnologias, métodos e estratégias de ensinar); do conhecimento escolar e sua organização curricular. Engloba, igualmente, análise da cultura profissional da docência e das políticas educacionais. 
3.2 Área de formação tecnológica: 
Com o conhecimento básico adquirido, esta área de formação visa mostrar a aplicação do mesmo no desenvolvimento tecnológico. O desenvolvimento tecnológico, de um lado, visa criar instrumentos (ferramentas) de interesse da sociedade ou robustecer tecnologicamente os sistemas de computação para permitir a construção de ferramentas antes inviáveis ou ineficientes. 
3.2.1 Sistemas operacionais, Redes de computadores e Sistemas Distribuídos 
Sistemas operacionais 
Sistemas Operacionais visam gerenciar a operação de computadores de modo a oferecer a seus usuários flexibilidade, eficiência, segurança, transparência e compartilhamento de recursos 
Nesse contexto, Sistemas Operacionais podem ser vistos segundo duas perspectivas: a) como um conjunto de programas que visa esconder as peculiaridades do hardware, apresentando aos usuários uma máquina mais fácil de ser utilizada, mais amigável e mais segura; b) como um conjunto de programas cuja tarefa principal é administrar os recursos disponíveis, de modo a satisfazer as solicitações o mais eficientemente possível, garantindo o compartilhamento e resolvendo possíveis conflitos.
Em Sistemas Operacionais os recursos computacionais são agrupado basicamente em quatro classes distintas: processo, memória, armazenamento (arquivos), entrada e saída. O gerenciamento de processos envolve conceitos de comunicação, sincronização, escalonamento, resolução de conflitos e troca de contexto. O gerenciamento de memória envolve conceitos sobre endereçamento, hierarquias de memória e memória virtual. O gerenciamento de arquivos envolve conceitos sobre diretórios, estrutura de endereçamento e acesso, segurança, compartilhamento (concorrência) e proteção. O gerenciamento de entrada e saída envolve conceitos sobre interrupções, dispositivos, interfaces e controladores de acesso.
Na evolução dos sistemas computacionais e por conseguinte dos Sistema Operacionais, tem-se hoje uma forte demanda pelos sistemas para gerenciamento não mais de um mas de uma rede de computadores. O estudo de Sistemas Distribuídos envolve, dentre outros, conceitos sobre interconexão de computadores, protocolos de comunicação, chamada de procedimentos remotos, comunicação em grupo, arquivos distribuídos, resolução de nomes e coordenação distribuída.
Redes de Computadores 
As Redes de Computadores constituem uma filosofia de utilização dos computadores que, interligados por sistemas de comunicação, passam a poder operar em conjunto, compartilhando recursos de hardware de software e permitindo a troca de informações entre seus usuários. 
As redes de computadores surgiram a partir da conjunção de duas tecnologias: comunicação e processamento da informação. Assim, a área de redes se volta essencialmente para a adequação de novas tecnologias de comunicação, que viabilizem a transferência segura e veloz da informação e, para o desafio de oferecer novos serviços que contemplem a necessidades, cada vez mais sofisticadas, dos usuários. 
A evolução contínua da tecnologia de comunicação permite transportar dados a altas velocidades e a grandes distâncias viabilizando as redes de integração de serviços que transportam diferentes mídias: texto, voz e imagens. Assim, as redes abrem portas para o oferecimento de uma grande variedade de serviços que atendem às diversas áreas do conhecimento, desde serviços simples como a transferência de um arquivo ou o estabelecimento de uma conexão com um sistema remoto, até serviços mais elaborados, que exigem recursos multimídia, que viabilizam, por exemplo teleconferência, ensino à distância, atendimento médico à distância, etc 
Conhecimentos básicos na área de Redes de Computadores envolvem o princípios da comunicação de dados, através da apresentação de seu conceitos básicos, topologias, conceitos relacionados à transmissão e codificação da informação (tipos de transmissão, multiplexação e modulação, modalidades de comutação, técnicas de detecção de erros, etc.), conhecimentos de como o hardware e o software de redes estão organizado em níveis, formando as arquiteturas de redes. Exemplos de arquiteturas de redes devem ressaltar os serviços, as funções de cada nível e os respectivos protocolos de comunicação; os diversos tipos de redes (locais, metropolitanas e geograficamente distribuídas), as redes de integração de serviços e aspectos básicos de interconexão de redes. 
Conhecimentos complementares da área podem oferecer uma visão geral dos sistemas operacionais de redes; da necessidade de gerenciar redes; dos ataques possíveis e dos métodos aplicáveis à segurança de redes e conhecimentos de como modelar e avaliar o desempenho de sistemas de rede de computadores. 
Aulas práticas também são recomendadas que possam, por exemplo, familiarizar o aluno com os serviços, aspectos de instalação, gerência e segurança de redes. 
Sistemas Distribuídos 
Sistemas Distribuídos são sistemas compostos de computadores fracamente acoplados, interconectados por rede que fornecem serviços e que permitem acesso e manuseio de dados e recursos compartilhados. 
As principais questões a serem abordadas na área de sistemas distribuídos dizem respeito a algoritmos distribuídos, sistemas operacionais e kernels, ambientes de programação e linguagens, confiabilidade (tolerância a falhas e segurança de dados), base de dados, sistemas multimídias, sistemas de tempo real (com aplicações, por exemplo, em automação industrial, robótica, aviônica e eletrônica automotiva.). 
A heterogeneidade dos equipamentos, sistemas operacionais, linguagens e protocolos, a manutenção da integridade das informações e o controle de acesso a estas, a extensão das aplicações distribuídas em redes de dimensão mundial e com um número muito grande de participantes, a garantia dos requisitos de segurança e o atendimento das restrições temporais exigidos por muitas aplicações são alguns dos desafios atuais da área de Sistemas Distribuídos. O conceito de sistemas abertos, a existência de padrões para estes, a utilização da orientação a objetos, as ferramentas disponíveis para o WEB, os mecanismos para a consistência dos sistemas, mesmo em presença de falhas e as técnicas de escalonamento em tempo real são alguns dos suportes disponíveis para enfrentar esses desafios. 
Atualmente a área de Sistemas Distribuídos tem se integrado fortemente com a área de Inteligência Artificial Distribuída (IAD). As grandes sub-áreas da IAD, sistemas multi-agentes e resolução distribuída de problemas, têm sido usadas como importantes ferramentas, tanto do ponto de vista teórico quanto prático. Esta integração ocorre na medida em que o uso de agentes, geralmente baseando-se em um comportamento social, permite resolver problemas de uma forma distribuída. 
3.2.2 Compiladores 
compiladores são ferramentas de tradução entre linguagens, mantendo a semântica original, tais como: ambientes para linguagens de programação (compiladores, interpretadores, debuggers, profilers, etc), ambientes para o processamento de linguagens naturais (verificadores orto-sintáticos e tradutores), ferramentas para a compatibilização entre dispositivos de hardware (device-drivers, emuladores, cross-compilers, etc.), dentre outras. 
O estudo de Compiladores deve abordar: (i) a estrutura de um compilador; (ii) a análise de programas-fonte, com o estudo dos métodos mais importantes de análise léxica e sintática, semântica, de organização da tabela de símbolos e gerenciamento de erros; (iii) as ferramentas para a geração automática dos componentes de um compilador; (iv) máquinas abstratas e otimização de código intermediário; (v) ambientes de tempo de execução; (vi) síntese de programas-objeto, compreendendo esquemas de tradução dirigida por sintaxe, geração de código de máquina e otimização de código. 
É fundamental que ao fim da disciplina de Compiladores o aluno seja capaz de justificar a escolha das ferramentas, ambientes, paradigmas e linguagens usados e suas versões no desenvolvimento de qualquer projeto de software in-the-small. Conceitos de modularidade, mantenibilidade, portabilidade e custos de software devem ser analisados durante todo o curso. 
O ensino de Compiladores deve assegurar aos alunos a oportunidade de aplicação das técnicas estudadas no desenvolvimento de projetos práticos de porte realístico. Compiladores é uma das áreas da Computação mais bem formalizadas, o que enseja implementações de ferramentas de alta correção e eficiência. 
A matéria Compiladores deve ser precedida do estudo de conceitos teóricos de linguagens e autômatos, sistema operacionais e arquiteturas de computadores. 
A área de compiladores tem como objetivo final aproximar o computador das linguagens próprias de seus usuários, facilitando assim a comunicação entre ambos. 
3.2.3. Banco de Dados 
A tecnologia atual vem facilitando a atividade de colecionar e armazenar dados indiscriminadamente, criando o problema de organizá-los e gerenciá-los de forma adequada. A área de bancos de dados visa propor soluções para este problema. Hoje em dia, qualquer entidade tem necessidade de sistemas de bancos de dados, que servem como base para o desenvolvimento de todas as aplicações, em ambientes comerciais, industriais, administrativos e científicos. 
O ensino em bancos de dados deve considerar dois fatores principais: o material do curso propriamente dito e a possibilidade invulgar para ligação com outras disciplinas. Os tópicos cobertos devem abordar problemas relativos aos dados propriamente ditos (organização, modelagem, integridade, armazenamento, integração, distribuição e empacotamento) e aos sistemas de gerenciamento de bancos de dados - SGBD (arquitetura, interfaces, linguagens de interação, processamento de consultas, controle de concorrência, recuperação, segurança, indexação, gerenciamento de buffers e arquivos). Tópicos adicionais envolvem novas técnicas de processamento da informação, que utilizam algoritmos de Inteligência Artificial. 
O material visto em bancos de dados permite fazer ponte com as matérias de Engenharia de Software, Inteligência Artificial, Compiladores, Interface Homem-Computador, Sistemas Operacionais, Sistemas Distribuídos, Redes e Linguagens de Programação. Bancos de dados podem também ser usados para motivar exemplos nas áreas de formação complementar. 
3.2.4 Engenharia de Software 
Engenharia de Software compreende um conjunto de disciplinas matemáticas, técnicas (em computação), sociais e gerenciais que sistematizam a produção, a manutenção, a evolução e a recuperação de produtos intensivos em software. Isso ocorre dentro de prazos e custos estimados, com progresso controlado e utilizando princípios, métodos, tecnologias e processos em contínuo aprimoramento. Os produtos desenvolvidos e mantidos segundo os preceitos de Engenharia de Software asseguram, por construção, qualidade satisfatória, apoiando adequadamente os seus usuários na realização de suas tarefas, operam satisfatória e economicamente em ambientes reais e podem evoluir continuamente, adaptando-se a um mundo em constante evolução. 
O ensino de Engenharia de Software em cursos de graduação pode dar origem a várias disciplinas com diferentes ênfases. A origem dessas disciplinas pode ter como motivação diferentes classificações didáticas: aspectos gerenciais, aspectos técnicos, aspectos teóricos e aspectos experimentais. A ênfase pode se dar em diferentes etapas do processo de desenvolvimento e manutenção de software: engenharia de requisitos, análise, arquitetura e projeto, programação, testes, manutenção, garantia de qualidade e gestão do processo de software. É importante notar que esses aspectos devem estar integrados em outras disciplinas, como por exemplo: bancos de dados, interface homem-máquina, sistemas de informação, redes e laboratórios diversos. 
No plano gerencial são importantes as diversas técnicas para medir e fazer estimativas de recursos, análises de custo-benefício, planejamento do desenvolvimento e montagem das equipes, gestão do processo e do produto de software. No plano técnico devem ser ensinadas as técnicas associadas a cada uma das fases do processo de desenvolvimento de software, com ênfase nos princípios gerais dos métodos de engenharia de requisitos, de análise e projeto de software, características dos diferentes domínios de aplicação, técnicas de programação, técnicas de geração de documentação, técnicas de teste, gerenciamento de configuração e manutenção de software. 
Ao ensinar estes conceitos deve-se assegurar que o estudante assimile as definições e os princípios fundamentais da engenharia de software através de disciplinas mais conceituais ou teóricas. Deve-se assegurar também que o estudante adquira experiência na aplicação destes conceitos através da prática em laboratórios e estágios. É fortemente recomendado que o estudante seja exposto a uma variedade de sistemas operacionais, sistemas de gerenciamento de bancos de dados, linguagens e paradigmas de programação, plataformas de operação, e de ferramentas de apoio ao desenvolvimento de software e documentação. 
3.2.5 Sistemas Multimídia, Interface homem-máquina e Realidade Virtual 
Sistemas Multimídia 
A formação de profissionais capazes de escrever programas de ação multimídia e que verdadeiramente se adaptem aos meios computacionais hoje disponíveis exige um conjunto mínimo de disciplinas de graduação -- algumas de fundamentos, outras aplicadas -- que se complementam e que definem um certo domínio de conhecimento dentro da área de ciência da computação. A computação multimídia resulta de uma combinação de matérias que lidam com técnicas e conceitos relativos aos mundos visual e auditivo, como a computação gráfica, a computação sônica e a construção de peças multimídia. 
Fixar no aluno os fundamentos desse domínio é uma tarefa que demanda uma formação sólida em estruturas de dados, programação orientada a objetos, geometria, álgebra linear, física da luz, física do som e as respectivas bases psico-físicas da visão e da audição, estando esse background distribuído em outras disciplinas que se oferecem na graduação. 
Computação gráfica deve ser apresentada ao aluno na sua forma canônica, de modo que possa abranger as transformações geométricas, a visualização em 3D, a modelagem de objetos, os sistemas de cores, a iluminação, a textura, o sombreamento e, ainda, os fundamentos de animação. 
Computação sônica -- tida como contrapartida auditiva da computação gráfica -- aborda a natureza da forma sônica, os algoritmos fundamentais para a construção de formas sônicas, as técnicas de processamento de sons digitais, as linguagens para síntese de áudio e para manipulação de sons e, certamente, algumas noções rudimentares de sistemas musicais e linguagens auditivas em geral. 
Alem disso, conceitos básicos de programação visual, editoração, composição, retórica, comunicação e cognição devem ser considerados, uma vez que fornecem subsídios importantes à matéria. 
Finalmente, a disciplina aplicada que se volta para a construção de peças multimídia -- tanto em aplicações locais, como em publicações interativas on-line -- deverá associar os conhecimentos apresentados nas disciplinas acima descritas à tecnologia disponível (atualmente Java, OpenGL, Midi, JavaSound) para estabelecer as bases da elaboração criteriosa e fundamentada de programas que tragam soluções (outputs) em níveis preceptivos superiores no que se refere a uma lógica de senso comum das percepções visual e auditiva. 
Das aplicações de maior demanda da computação multimídia fazem parte a publicação científica on-line, a visualização científica em geral, as peças instrucionais ou tutoriais para qualquer área de conhecimento, os programas para uso em medicina cirúrgica, o marketing, a arte, o entretenimento, e muitas outras. 
Interface homem-máquina 
Os profissionais da área de Computação produzem artefatos que se destinam a públicos específicos com as mais variadas habilidades técnicas e perfis sócio-culturais. Tais artefatos devem-se inserir o mais naturalmente possível no contexto de trabalho de seus usuários. Para que isto possa ocorrer, o especialista em Computação deve entender profundamente a estrutura subliminar do trabalho realizado pelos "especialistas em trabalho" (os usuários) e, então, analisar os possíveis pontos de inserção de tecnologia com base nos perfis obtidos (análise do usuário), avaliar as suas implicações bem como reprojetar as formas correntes de executar trabalho (análise das tarefas). Nesse sentido, tem surgido cada vez mais a preocupação dos profissionais de Ciência da Computação em como fazer o "casamento" de ferramentas e ambientes computacionais aos usuários, às suas tarefas e às suas aspirações sociais. A exemplo do que ocorreu desde a revolução industrial em outras áreas como a "engenharia industrial", os fatores humanos, a ergonomia e a relação homem-máquina surge também em nosso domínio do conhecimento, em geral com os nomes de "Interação Humano-Computador" (IHC) ou "Interfaces Homem-Computador". 
Interação Humano-Computador pode ser definida como "a disciplina relacionada ao projeto, implementação e avaliação de sistemas computacionais interativos para uso humano, juntamente com os fenômenos relacionados a esse uso". Refere-se, portanto, não apenas às questões de interface de interação H-C, mas também a teorias e técnicas de projeto de sistemas interativos. Tais teorias fundamentam-se basicamente no estudo dos usuários, da tecnologia computacional e de como um exerce influência sobre o outro, através do entendimento do contexto de trabalho que a pessoa está realizando através dessa tecnologia. 
A produção de uma Interface Homem-Computador passa por uma série de etapas que vão desde a fase de projeto "conceitual" da interface até as etapas de testes de "usabilidade" realizadas junto aos usuários finais do sistema. Nestas etapas empregam-se inúmeras técnicas e ferramentas diferentes, emprestadas de várias disciplinas como: Engenharia de Software, Ergonomia e Psicologia Cognitiva e Perceptiva. 
Durante todo o processo de desenvolvimento de uma interface de usuário, a preocupação com a "usabilidade" do sistema interativo em construção deve permear todas as atividades do processo. Quem determina se um sistema interativo será ou não bem sucedido são os usuários e estes preferem, via de regra, sistemas fáceis de aprender e usar, mesmo que de funcionalidade reduzida, a sistemas com funcionalidade computacionalmente mais "poderosa", mas com uma interface pobre com a qual precisa "duelar" o tempo todo para produzir algo útil. Para melhorar o grau de usabilidade, as atividades de avaliação por especialistas em tecnologia e os testes com usuários durante a implementação dos protótipos são absolutamente essenciais em todo e qualquer processo de desenvolvimento de interfaces de usuários. 
É importante enfatizar novamente a importância de contribuições de outras disciplinas, uma vez que suas influências no projeto de sistemas interativos são percebidos em termos da usabilidade de tais sistemas. O processo de projeto deve ser, portanto, centrado no usuário, incorporando os modelos cognitivos que dão suporte a elementos de usabilidade. Técnicas analíticas ou empíricas devem ser usadas para avaliar se o sistema satisfaz os requisitos do usuário e de sua tarefa. Deve-se considerar também que existem grupos específicos - como crianças, deficientes físicos e novas aplicações emergentes - que apresentam necessidades particulares, diferentes daquelas dos usuários tradicionais. 
Ao ensinar os conceitos envolvidos no desenvolvimento de interfaces é preciso assegurar-se que o aluno entenda a dimensão e a importância do problema de projetar e construir interfaces de alto grau de usabilidade, seja exposto a diferentes modelos específicos de desenvolvimento, aprenda a utilizar algumas técnicas e métodos de alto impacto sobre a melhoria da usabilidade aplicáveis por especialistas em Computação. Uma experiência prática de projeto que envolva a construção projetos e/ou protótipos bem como a sua avaliação de acordo com princípios de projeto de interfaces já bem estabelecidos é altamente recomendável. 
Realidade Virtual 
Realidade Virtual pode ser definida como uma técnica avançada de construção de interfaces tridimensionais altamente interativas, usando dispositivos não convencionais de entrada e saída. 
Sua aplicação pode dar-se nas mais diversas áreas do conhecimento, utilizando ou desenvolvendo as habilidades naturais dos usuários para executar operações, através de acessos tridimensionais imersivos e multisensoriais a ambientes virtuais. 
Essa área envolve conhecimentos sobre: fundamentos de computação gráfica tridimensional, plataformas computacionais de alto desempenho, dispositivos multisensoriais de entrada e saída, softwares e linguagens para desenvolvimento de aplicações de realidade virtual, modelagem e animação tridimensional, simulação em tempo real, sistemas distribuídos, projeto de interfaces, desenvolvimento de software, e análise de fatores humanos. 
É interessante fazer uso de equipamentos de alto desempenho, dispositivos especiais e softwares específicos para o desenvolvimento de ambientes virtuais e aplicações com interfaces tridimensionais. Além disso, deve-se explorar o vasto material de desenvolvimento e demonstração de realidade virtual, disponível na Internet. 
3.2.6 Inteligência Artificial 
Inteligência Artificial (IA) é a área da Ciência da Computação dedicada à formulação e implementação de teorias e modelos computacionais de funções cognitivas. A Inteligência Artificial visa tornar a máquina capaz de exibir, aos olhos de um observador externo, um comportamento inteligente na realização de tarefas e resolução de problemas. Para tanto, a IA transcende os limites da Ciência da Computação, interagindo com áreas tais como a Filosofia, a Lingüística, a Psicologia, a Biologia e a Lógica. 
Representação do Conhecimento, Automatização do Raciocínio, Resolução de Problemas, Aprendizagem Automática, Percepção e Processamento de Linguagem Natural, entendidas em sentido abrangente, podem ser consideradas áreas fundamentais da Inteligência Artificial. 
A Representação do Conhecimento trata de modelos para a organização do conhecimento e de técnicas para a sua representação e manipulação em sistemas computacionais. Esses modelos podem ser de natureza simbólica (como lógica, redes semânticas, frames, etc.) ou não simbólica (como redes neurais, algoritmos genéticos, redes bayesianas, etc.). 
A Automatização do Raciocínio compreende o estudo de métodos de inferência, pelos quais novos conhecimentos podem ser obtidos, por derivação, a partir do conhecimento disponível. Dentre eles destacam-se a dedução lógica, a inferência não-monotônica e a inferência bayesiana. 
A Resolução de Problemas dedica-se ao estudo e elaboração de algoritmos, com o concurso de métodos heurísticos, capazes de resolver, por exemplo, problemas considerados intratáveis do ponto de vista da computação convencional. 
A Aprendizagem Automática trata do desenvolvimento de métodos de aquisição autônoma de conhecimento. Os métodos de aprendizagem podem ser classificados em indutivos (de natureza simbólica), probabilísticos, genéticos e conexionistas (os três últimos de natureza não simbólica). 
A Percepção se preocupa com o desenvolvimento de sistemas capazes de transformar as informações do meio ambiente em dados. Exemplo disto são os sistemas de reconhecimento de odores, vozes, faces, retinas ou impressões digitais, os que detectam movimentos ou texturas e os que interpretam textos manuscritos e reconhecem assinaturas. 
Finalmente, o Processamento de Linguagem Natural dedica-se ao estudo e desenvolvimento de técnicas e teorias de interpretação e geração automática de frases e textos em alguma língua natural (ex., Português, Inglês, etc.). 
Algumas áreas de aplicação típicas da IA são: Sistemas Especialistas, Robótica, Sistemas de Reconhecimento de Voz e Imagens, Jogos, Sistemas Tutoriais Inteligentes, Tradutores Automáticos, Mineração de Dados, Recuperação de Informação, Interfaces Adaptativas, etc. No âmbito da Ciência da Computação, tem sido crescente a utilização de técnicas da IA em áreas como Banco de Dados, Engenharia de Software, Sistemas Distribuídos, Redes de Computadores, Computação Gráfica, Informática na Educação, etc. 
Como base ao estudo da IA são imprescindíveis conhecimentos de Lógica Matemática, Teoria da Computação, Estruturas de Dados, Análise de Algoritmos e Programação. O conhecimento de linguagens de programação desenvolvidas segundo os paradigmas lógico, funcional e orientado a objetos é especialmente relevante para aplicações na área de IA. 
3.2.7 Computação Gráfica e Processamento de Imagens 
Computação Gráfica 
Computação Gráfica reúne um conjunto de técnicas que permitem a geração de imagens a partir de modelos computacionais de objetos reais (ou imaginários) ou de dados quaisquer coletados por equipamentos na natureza. A aplicação de tais técnicas está há vários anos difundida por várias áreas de aplicação, notadamente, CAD/CAM/CAE ("computer-aided design/manufacture/engineering" - projeto/manufatura/engenharia auxiliada por computador), animação e efeitos especiais (para publicidade e entretenimento), apresentação gráfica de dados (economia, administração, estatística) e, mais recente, em visualização de dados tridimensionais produzidos por simulação ou coletados por equipamentos diversos como, por exemplo, tomógrafos e satélites meteorológicos. 
O estudo de tais técnicas compreende processos de modelagem de objetos, a representação de dados coletados de formas distintas, a geração de imagens com graus variáveis de realismo, entre outros. Costuma-se dividir a Computação Gráfica de acordo com a dimensão das entidades tratadas. Objetos bidimensionais, descritos num plano cartesiano, por exemplo, são tratados e visualizados com processos diversos daqueles empregados na representação e visualização de objetos tridimensionais. Já dados coletados ou gerados a partir de simulações, por exemplo, levam ao emprego de outros processos de visualização. Igualmente importante para a Computação Gráfica são os aspectos de interação homem-máquina, uma vez que as técnicas de modelagem são fundamentalmente interativas, o que provê uma forte interação com a área de Sistemas Multimídia, Inteface Homem-Máquina e e Realidade Virtual. 
Em geral, o estudo de Computação Gráfica requer o uso de conceitos de disciplinas da Matemática, notadamente álgebra linear, geometria analítica, cálculo integral e diferencial e elementos da Física no que se refere a modelos de iluminação e movimento. 
Processamento de Imagens 
A sub-área de Processamento de Imagens, juntamente com a Computação Gráfica, aborda o tratamento da informação pictorial. Entre os seus objetivos principais destacam-se o desenvolvimento de técnicas, metodologias, e implementações visando a representação, processamento e comunicação de imagens. 
O estudo da representação de imagens compreende os vários processos envolvidos na aquisição, digitalização, visualização e caracterização matemática de imagens através de transformações ou modelos, visando o seu processamento eficiente em uma etapa posterior. 
Por outro lado, o processamento de imagens propriamente dito aborda temas variados como realce, filtragem, restauração, análise, reconstrução a partir de projeções, compressão e comunicação de imagens. 
Devido ao aspecto emergente desta sub-área, o desenvolvimento de projetos e estudos de casos em sistemas de processamento de imagens, voltados para problemas específicos em engenharia, medicina, telecomunicações e etc., são importantes para a formação do aluno. Geralmente, os problemas abordados têm um caráter multidisciplinar, e podem utilizar conceitos específicos de outras disciplinas, como física ótica, teoria da informação, processos estocásticos, inteligência artificial, percepção visual, entre outras. 
3.2.8 Prática do ensino de computação 
Esta matéria visa aplicar os conceitos básicos de pedagogia no ensino de computação para o ensino básico e profissionalizante. Ela responde a seguinte pergunta: Como ensinar computação no ensino básico e profissionalizante. Não se conhece ainda a maneira correta de introduzir os conhecimentos de computação. Os alunos aprendem a contar usando os dedos da mão. Ensinar computação deve partir de um modelo de computação abstrato ou de um modelo mais real ? Os métodos e técnicas de ensino de computação, quer seja para fins de profissionalização de adolescentes em cursos técnicos, quer seja para fins de preparação geral para o trabalho nas séries de 5º a 8º do 2º grau, não poderão ser os mesmos utilizados para o ensino de adultos e o ensino superior, mesmo porque, os laboratórios necessários para o ensino deverão ter características próprias. 
O corpo de conhecimentos a serem introduzidos deverá ser flexível. O ensino de computação deve considerar a existência de máquinas e algoritmos. Realizar um "teatro" representando máquinas e mostrando as várias partes funcionando com o auxílio dos alunos pode ser uma forma simples e didática de apresentar o funcionamento de um computador. A unidade aritmética, representada por uma calculadora, a memória representada por escaninhos, etc., e usando uma linguagem simples, possam funcionar no teatro dos alunos. Um deles busca uma instrução na memória, interpreta e passa ao seguinte que executa a instrução. Um "teatro" montado desta forma mostra como uma tarefa colocada na memória pode ser executada. Assim, pode ser introduzido o conceito de máquina e algoritmo. 
Em seguida, pode-se propor problemas ao alcance dos alunos que deverão encontrar uma ou mais soluções (algoritmo) que funcione no "teatro" representado pelos alunos, utilizando a linguagem simples da máquina. Em outro momento, simuladores de computadores mais detalhados podem ser usados e o processo de resolução de problemas nesses simuladores poderá ser repetido. E em um terceiro momento pode ser introduzido uma linguagem de programação real e noções de software básico e aplicativos. 
3.3 Áreas de formação complementar. 
Os profissionais da área de computação devem produzir ferramentas para atender necessidades da sociedade. Hoje é praticamente impossível enumerar as facilidades introduzidas pela informática na atividade humana. Algumas atividades são mais freqüentes, como, por exemplo, nas atividades administrativas, outras mais relevantes, como, por exemplo, em um sistema de monitoramento de pacientes. Para que os profissionais possam interagir com profissionais de outras áreas na busca de soluções computacionais complexas para seus problemas, o profissional de computação deve conhecer de forma geral e abrangente essas áreas. Assim, os cursos devem escolher uma área de formação de recursos humanos complementar, ou uma matéria dessa, e definir, juntamente com os departamentos correspondentes, um elenco bem formado de disciplinas e oferecer a seus alunos. Independentemente desses objetivos é importante que os egressos de cursos da área de computação tenham conhecimentos de algumas áreas complementares, por exemplo, economia, direito, administração etc., não introduzidas no segundo grau, e que os atingem como profissionais. 
3.4 Formação humanística 
História da Ciência da Computação 
O conhecimento da evolução histórica da área de computação mostra como se chegou até o presente e permite ao egresso conhecer a si mesmo como uma evolução de seus antecessores. 
Empreendedorismo 
Formação de empreendedores é um processo de prover profissionais de áreas técnicas ou administrativas com os conceitos e habilidades para reconhecer e aproveitar oportunidades de negócio, criando e gerenciando empreendimentos de sucesso, seja através do estabelecimento de uma empresa ou da atuação empreendedora em departamentos ou centros de custo/receita. Este processo inclui treinamento em reconhecimento de oportunidades, gerenciamento de recursos, análise e gerenciamente de risco, abertura e administração do negócio, planejamento de negócio, alavancagem de capital, marketing, técnicas de fluxo de caixa e conhecimento sobre normas e legislação para o estabelecimento de um empreendimento. Tambem serao desenvolvidas habilidades como: criatividade, liderança, trabalho em equipe, facilidade de comunicação, etc.
O Empreendedorismo é uma nova forma de tornar o setor produtivo mais agressivo, competitivo e criativo. Sua prática pode ser interpretada como um nova estratégia de política industrial com vistas ao desenvolvimento do País, diferente, por exemplo, da reserva de mercada para a informática.
Ética 
Os computadores estão tão presentes na nossa sociedade que sua importância é inquestionável. Eles estão mudando a forma como nós estudamos, trabalhamos, nos divertimos e nos comunicamos uns com os outros. O estudo da ética na área de computação é o estudo das questões éticas que aparecem como conseqüência do desenvolvimento e uso dos computadores e das tecnologias de computação. Ela envolve identificar e divulgar as questões e problemas que estão dentro de seu escopo, aumentando o conhecimento da dimensão ética de uma situação particular. Envolve também estudar como abordar essas questões e problemas visando a avançar nosso conhecimento e entendimento desses problemas, bem como sugerir soluções sábias para eles [Johnson & Nissembaum, 1995]. 
A abordagem didática para esta matéria pode ser bastante variada: leitura de artigos, livros e matérias publicadas em revistas e jornais não técnicos, discussão de casos reais ou fictícios, trabalhos em grupo sobre temas específicos, entrevistas com profissionais de reconhecida competência e reputação, estudo dos códigos de ética de sociedades de classe, etc. Este assunto deve ser relacionado com disciplinas tais como sistemas de informação, computadores e sociedade, métodos para desenvolvimento de software, etc. 
Os tópicos abordados devem evoluir na medida em que a tecnologia evolui e afeta o comportamento da sociedade. Tópicos atuais que podem ser mencionados são: acesso não autorizado a recursos computacionais (hackers, virus,etc.); direitos de propriedade de software (pirataria, a atual lei que regulamenta a propriedade do software, engenharia reversa); confidencialidade e privacidade dos dados; segurança; riscos da computação e sistemas críticos com relação à segurança; à responsabilidade profissional e à regulamentação profissional; software que discrimine minorias, preocupações nas áreas de saúde e ambiental. 
Computador e Sociedade 
Nenhuma máquina deixa de ter algum efeito colateral negativo. Nesta matéria deve-se dar ênfase às influências negativas sociais e individuais causadas pelos computadores (os benefícios já são largamente divulgados). Sendo máquinas abstratas, e algorítmicas, o principal efeito sobre seus usuários é o de forçar um pensamento abstrato, lógico-simbólico e algorítmico. Secundariamente, por ser uma máquina que simula pensamentos humanos, e portanto virtual, ela não produz desastres visíveis, como o fazem as máquinas concretas. Um desses desastres é a indução de indisciplina mental, típica dos programadores (origem básica do "bug" do ano 2.000 - se os programas tivessem sido bem documentados, seriam facilmente alteráveis), mas também de usuários que empregam por exemplo editores de texto. Nesse caso, qualquer correção pode ser feita, não é mais necessário prestar atenção à ortografia e à gramática, etc. 
Um aspecto fundamental que deve ser discutido com os alunos é a influência do computador sobre a mentalidade dos programadores e usuários. Por apresentar um espaço lógico-simbólico determinista, o computador tende a produzir pensamentos rígidos, no sentido de serem sempre baseados em lógica rigorosa. 
Do ponto de vista social deve-se abordar o problema do computador substituir o trabalho humano, principalmente o que dignifica o homem, e não somente aquele que o degrada (se bem que talvez seja importante dar trabalho, mesmo se ele não for dignificante, em lugar de se criar desemprego pela automação indiscriminada). Um exemplo de substituição de trabalho diginificante é o uso de computadores na educação se isso diminuir a presença do professor. 
É importante que se faça uma discussão sobre os efeitos negativos da Internet, como induzir a troca de correspondência telegráfica, a possibilidade de se publicar algo sem que alguém assuma responsabilidade pela verificação da qualidade, o aumento exponencial do lixo nela existente, o fato de crianças poderem ter acesso às informações descontextualizadas, os efeitos sociais negativos como o isolamento, etc. 
Finalmente, devem ser abordadas formas de contrabalançar as influências perniciosas dos computadores sobre a mente dos seus usuários e programadores. A prática de atividades artísticas é um exemplo de possível antídoto para compensar o pensamento rígido imposto pelo computador. Neste, a criatividade tende a ser mera combinação de instruções e comandos pré-existentes e matematicamente bem definidos. Pelo contrário, na atividade artística o espaço mental, sadiamente acompanhado pelo emocional, é aberto e mal-definido. 
Sociologia 
A instrumentalização humanística e ética nos currículos superiores do campo da computação e informática encontra a sua maior justificativa na importância para as atuais e futuras gerações, dos estudos, suficientemente contrastados, das sociedades modernas e contemporâneas, visando a compreensão dos aspectos da vida social e cultural da qual fazem parte, em termos de desenvolvimento político, cultural, científico, tecnológico e de seus valores; bem como da análise crítica das relações sociais e das suas íntimas conexões com a revitalização da vida cívica. Fundamentalmente o estudo dessas relações levará as gerações dos profissionais à compreensão da dinâmica social e da sua inserção na mesma, dos interesses políticos, das estruturas e das relações de poder na sociedade. 
Diante dos desafios colocados pelas inovações tecnológicas e mudanças na organização do trabalho é exigido do profissional do terceiro milênio o conhecimento das tendências e concepções de organização do trabalho, das mudanças no conteúdo do trabalho e das novas exigências de qualificações impostas pelas novas tecnologias. Tais mudanças indicam os princípios básicos que devem formar uma proposta de preparação profissional que leve em conta os desafios das novas tecnologias e as necessidades das populações. A especificidade do enfoque sociológico possibilita a formação do sujeito numa perspectiva de politecnia, o que representa a síntese entre uma formação geral, uma formação profissional e formação política, promovendo o espírito crítico no sentido de uma qualificação baseada no desenvolvimento autêntico e integral do sujeito como indivíduo e como ator social, postulando não só a sua inserção mas também a compreensão e o questionamento do mundo tecnológico e do mundo sociocultural que o circunda. 
O enfoque sociológico não pode prescindir da análise das novas competências necessárias aos profissionais diante das mudanças no mundo do trabalho. Contudo, cabe à sociologia garantir o desenvolvimento do sujeito socialmente competente: do sujeito que busca a autonomia, a auto- realização e a emancipação, colocando-se diante da realidade histórica, pensando esta realidade e atuando nela. 
Filosofia 
Ciência e Filosofia têm as mesmas origens históricas centradas na explicação racional dos fenômenos naturais, em oposição aos argumentos mitológicos e religiosos que os justificavam. 
Ambas se caracterizam pela intenção de ampliar a compreensão da realidade através da busca incessante do conhecimento: a filosofia, no sentido de apreendê-la na totalidade, e as Ciências através de um conjunto organizado de conhecimentos especialmente obtidos mediante a observação e a experiência. 
De maneira superficial pode-se dizer que ambas são conhecimentos científicos, tendo como objeto a mesma realidade, mas distinguindo-se pela perspectiva inexperimentável ou experimentável adotada. 
A consideração de questões epistemológicas tais como a possibilidade do conhecimento científico, as condições para revelação do conhecimento verdadeiro e o relacionamento entre as teorias científicas e a experiência por elas retratadas são pontos vitais na formação do profissional contemporâneo. 
Desta forma o estudo integral da Computação transcende as questões meramente técnicas, exigindo a priori a compreensão do processo de construção do conhecimento, ponto central de qualquer investigação filosófica. 
4 Metodologia
Os cursos da área de Computação e Informática podem ser divididos em quatro grandes categorias, não equivalentes entre si: 
-	os cursos que tem predominantemente a computação como atividade fim; 
-	os cursos que tem predominantemente a computação como atividade meio;
-	os cursos de Licenciatura em Computação e os
-	Cursos de Tecnologia (cursos seqüenciais)
1) Os Cursos que tem a computação como atividade fim visam a formação de recursos humanos para o desenvolvimento científico e tecnológico da computação. Os egressos desses cursos devem estar situados no estado da arte da ciência e da tecnologia da computação, de tal forma que possam continuar suas atividades na pesquisa, promovendo o desenvolvimento científico, ou aplicando os conhecimentos científicos, promovendo o desenvolvimento tecnológico. Deve ser dado nesses cursos uma forte ênfase no uso de laboratórios para capacitar os egressos no projeto e construção de software e no projeto de hardware. A instituição sede de um curso desta categoria deve desenvolver atividades de pesquisas na área de computação e os alunos, dela participando, levarão para o mercado de trabalho idéias inovadoras e terão a capacidade de alavancar e/ou transformar o mercado de trabalho. Assim, são recursos humanos importantes para o mercado do futuro, através de atividades empreendedoras, das industrias de software e de computadores. Os egressos desses cursos são também candidatos potenciais a seguirem a carreira acadêmica, através de estudos pós-graduados. É recomendável que os cursos desta categoria sejam desenvolvidos em universidades que possuam pós-graduação na área de computação. Uma parcela grande dos professores responsáveis pelas disciplinas de computação devem dar dedicação integral à instituição com vistas às atividades de pesquisa, de extensão e de pós-graduação. O currículo desses cursos devem incluir um Trabalho de Diplomação (trabalho de conclusão de curso), a ser desenvolvido durante um semestre, que contribua para o desenvolvimento tecnológico da computação. Esses cursos, dados suas características, preferencialmente, devem ser desenvolvidos nos turnos matutino ou vespertino. Estima-se que o mercado necessite de 25 a 50% de egressos desses cursos sobre o total de egressos necessários para o mercado de computação. Esses cursos são denominados de Bacharelado em Ciência da Computação ou Engenharia de Computação. 
A aplicação da ciência da computação e o uso da tecnologia da computação nos cursos de Ciência da Computação são próprios de cada curso.
Não há consenso quanto a diferença de perfil entre os cursos denominados de Ciência da Computação e de Engenharia de Computação. Normalmente, a diferença está na aplicação da ciência da Computação e no uso da tecnologia da Computação: os cursos de Engenharia de computação visam a aplicação da ciência da computação e o uso da tecnologia da computação, especificamente, na solução dos problemas ligados a automação industrial. Muitos cursos de Engenharia de Computação visam, também, a aplicação da física e eletricidade na solução dos problemas da automação industrial. Esses cursos incluem, portanto, nos seus currículos, uma nova base científica, a física e a eletricidade, que se introduzida de forma abrangente e profunda estendem demasiadamente os currículos dos cursos, alem de invadir a área de competência da engenharia elétrica. Os cursos de Ciencia da Computação se possuírem uma formação complementar em automação industrial não diferem muito dos cursos de Engenharia de Computação.
Automação - A área de Automação envolve todas as atividades de transformação de trabalho originalmente desempenhado pelo homem em tarefas executadas por sistemas computacionais, visando o aumento de produtividade, eficiência e segurança, e redução de custos. Assim sendo, um Sistema de Automação agrega um conjunto de equipamentos, sistema de informação e procedimentos que tem por função desempenhar automaticamente tarefas produtivas, com interferência mínima do homem. Os procedimentos implementam os processos, que podem ser classificados em três categorias: Processos Contínuos (produção em fluxo contínuo, onde as variáveis são analógicas, como, por exemplo, na indústria química, siderúrgica, etc.); Processos de Manufatura (Discretos) (produção em fluxo discreto, originado de indústria com aplicação intensiva de mão de obra, como, por exemplo, na indústria automobilística); e Processos de Serviço (onde o produto final é um serviço, como, por exemplo, no caso da indústria financeira, comércio e engenharia). 
Automação Industrial - Automação industrial refere-se aos dois primeiros tipos de processos supracitados (Contínuos e Discretos). 
A Automação Industrial é uma área tecnológica multidisciplinar, e requer a integração de conhecimento de áreas básicas, tecnológicas e até complementares, tais como: 
•	Física, Eletricidade e Controle de sistemas, para o projeto dos sistemas controladores de processo; 
•	Arquitetura de Computadores, para a especificação e projeto de sistemas que atendam os requisitos funcionais das aplicações a serem controladas, projeto das interfaces de supervisão e controle (aquisição de dados e atuação sobre o ambiente controlado); 
•	Sistemas de Tempo-Real, na verificação dos aspectos temporais dos processos, desde a especificação de requisitos, passando pelas características específicas dos sistemas operacionais e até a arquitetura e comunicação dos processadores que satisfazem tais condições; 
•	Redes de Computadores, principalmente as locais, com suas diversas configurações e protocolos de comunicação; 
•	Sistemas Distribuídos, principalmente quanto ao software, sincronização, trabalho cooperativo; 
•	Engenharia de Software, para o projeto de sistemas que envolvam requisitos temporais; 
•	Confiabilidade de Sistemas, em ambientes com diversos graus de hostilidade, arquiteturas redundantes, robustez de hardware e software; 
•	Outras áreas em Computação: Redes Neurais e sistemas Fuzzy Robótica, como matéria que pode ser vista como uma ferramenta de automação industrial;
2) Os cursos que tem a computação como atividade meio visam a formação de recursos humanos para automação dos sistemas de informação das organizações. Os cursos devem dar uma forte ênfase no uso de laboratórios para capacitar os egressos "no uso" eficiente das tecnologias nas organizações. Esses cursos reúnem a tecnologia da computação e a tecnologia da administração e, portanto, possuem, de ambas as áreas, um enfoque pragmático forte e pouco teórico. É muito importante que os alunos realizem estágios nas organizações e que parte do corpo docente tenha uma boa experiência profissional de mercado na área de sistemas de informação. São recursos humanos importantes para atender as necessidades do mercado de trabalho corrente. Os egressos desses cursos devem buscar, quando necessário, uma atualização de sua formação através de cursos de especialização (pós-graduação lato-sénsu) e são candidatos potenciais aos cursos de pós-graduação stricto-sénsu, responsáveis pelo desenvolvimento científico da área de sistemas de informação das organizações. O currículo desses cursos devem incluir um Trabalho de Diplomação (trabalho de conclusão de curso), a ser desenvolvido durante um semestre, que contribua para a melhoria da automação, do desempenho, da eficiência e da racionalização dos serviços administrativos das organizações. Esses cursos, dados suas características podem, também, ser desenvolvidos no turno noturno. É recomendável que os cursos desta categoria sejam desenvolvidos em centros universitários, faculdades integradas e faculdades. Estima-se que o mercado necessite de 50 a 75% de egressos desses cursos sobre o total de egressos necessários para o mercado de computação. Esses cursos são denominados de Bacharelado em Sistemas de Informação. 
Automação - A área de Automação envolve todas as atividades de transformação de trabalho originalmente desempenhado pelo homem em tarefas executadas por sistemas computacionais, visando o aumento de produtividade, eficiência e segurança, e redução de custos. Assim sendo, um Sistema de Automação agrega um conjunto de equipamentos, sistema de informação e procedimentos que tem por função desempenhar automaticamente tarefas produtivas, com interferência mínima do homem. Os procedimentos implementam os processos, que podem ser classificados em três categorias: Processos Contínuos (produção em fluxo contínuo, onde as variáveis são analógicas, como, por exemplo, na indústria química, siderúrgica, etc.); Processos de Manufatura (Discretos) (produção em fluxo discreto, originado de indústria com aplicação intensiva de mão de obra, como, por exemplo, na indústria automobilística); e Processos de Serviço (onde o produto final é um serviço, como, por exemplo, no caso da indústria financeira, comércio e engenharia). 
Automação dos Sistemas de Informação - Automação dos Sistemas de Informação refere-se ao terceiro tipo de processos supracitados 
Os cursos que trabalham os sistemas de informação, no campo acadêmico, abrangem duas grandes áreas: (1) aquisição, desenvolvimento e gerenciamento de serviços e recursos da tecnologia de informação e (2) o desenvolvimento e evolução de sistemas e infra-estrutura para uso em processos organizacionais. 
A função de sistemas de informação tem a responsabilidade geral de desenvolver, implementar e gerenciar uma infra-estrutura de tecnologia da informação (computadores e comunicação) dados (internos e externos) e sistemas que abrangem toda a organização. Tem a responsabilidade de fazer prospecção de novas tecnologias da informação e auxiliar na sua incorporação às estratégias, planejamento e práticas da organização. A função também apóia sistemas de tecnologia da informação departamentais e individuais. 
A atividade de desenvolvimento de sistemas para processos organizacionais e inter-organizacionais envolve o uso criativo de tecnologia da informação para aquisição de dados, comunicação, coordenação, análise e apoio à decisão. Há métodos, técnicas, tecnologia e metodologias para essa atividade. A criação de sistemas em organizações inclui questões de inovação, qualidade, sistemas homem-máquina, interfaces homem-máquina, projetos sócio-técnicos e gerenciamento de mudanças. 
Os sistemas de informação são difundidos por todas as funções organizacionais. Eles são usados por contabilidade, finanças, vendas, produção e assim por diante. Esse uso generalizado aumenta a necessidade de sistemas de informação profissionais com conhecimento do desenvolvimento e gerenciamento de sistemas. Profissionais com esses conhecimentos apoiam a inovação, planejamento e gerenciamento da infra-estrutura de informação e coordenação dos recursos de informação. O desenvolvimento de sistemas de informação por membros da equipe de SI envolve não apenas sistemas integrados abrangendo toda a organização, mas também apoio para o desenvolvimento de aplicações departamentais e individuais". 
Sistemas de Informação podem ser definidos como uma combinação de recursos humanos e computacionais que interrelacionam a coleta, o armazenamento, a recuperação, a distribuição e o uso de dados com o objetivo de eficiência gerencial (planejamento, controle, comunicação e tomada de decisão), nas organizações. Adicionalmente, os sistemas de informação podem também ajudar os gerentes e os usuários a analisar problemas, criar novos produtos e serviços e visualizar questões complexas. O estudo de Sistemas de Informação bem como o seu desenvolvimento envolve perspectivas múltiplas e conhecimentos multidisciplinares que incluem diversos campos do conhecimento como: ciência da computação, ciência comportamental, ciência da decisão, ciências gerenciais, ciências políticas, pesquisa operacional, sociologia, contabilidade, etc. 
Esta visão indica que Sistemas de Informação são sistemas sociais compostos de tecnologia de informação que exigem investimentos sociais, organizacionais e intelectuais para faze-los funcionar adequadamente. 
Entende-se por tecnologia de informação como sendo uma combinação de hardware e software de uso geral ou específico, incluindo sistemas de informação, aliado às tecnologias de armazenamento, distribuição, telecomunicação e visualização através das diversas mídias e suas respectivas técnicas. Com o crescimento econômico da informação e a necessidade de sua distribuição global, indústrias inteiras estão sendo transformadas através da aplicação de informação e das tecnologias de comunicação. No nível organizacional, muitas empresas dependem desta tecnologia para suas funções chave, tais como produção e vendas, existindo ainda hoje pouquíssimas áreas que não foram afetadas pela tecnologia de informação. 
Assim, os Sistemas de Informação são mais conhecidos pelos benefícios que trazem para a gestão dos negócios em que se tenta eliminar os desperdícios, as tarefas demasiadamente repetitivas, com ou sem o uso de papel, de maneira a melhorar o controle dos custos, a qualidade do produto ou serviço, maximizando os benefícios alcançados com a utilização de tecnologia da informação. 
Para melhorar a eficiência gerencial, os Sistemas de Informação das organizações devem ser integrados e serem projetados para antecipar as incertezas do futuro em um ambiente dinâmico que inclui, além dos seus usuários e desenvolvedores, o relacionamento com outras organizações como: clientes (com finalidade comercial ou social), fornecedores, competidores, agências de regulamentação, etc. 
3) Os cursos de Licenciatura em Computação visam formar educadores para o ensino médio em instituições que introduzem a computação em seus currículos. A maneira correta de introduzir computação no ensino médio é ainda hoje pouco conhecida. É recomendável que os cursos desta categoria sejam desenvolvidos em Institutos Superiores ou Escolas Superiores O ensino médio profissional poderá ter na computação uma de suas alternativas, quando profissionais para atender necessidades específicas da área se fizerem necessários. 
4) Os Cursos de tecnologia, nos termos da legislação, são cursos de nível superior que visam atender necessidades emergenciais do mercado de trabalho e, por isso, são de curta duração e terminais. Uma vez atendida a demanda de profissionais os cursos devem ser extintos. Não há regras para concepção dos currículos. Deve haver uma coerência entre currículo e denominação do curso. A área de computação e informática, por ser dinâmica, encontra nos cursos de tecnologia uma solução eficiente para resolver necessidades imediatas e urgentes do mercado de trabalho. Nos termos da legislação vigente eles podem ser enquadrados como cursos sequenciais. É recomendável que os cursos desta categoria sejam desenvolvidos em centros universitários, faculdades integradas e faculdades. Os cursos de Tecnologia em Processamento de Dados, criados na década de 70 para substituir a formação de recursos humanos pelas empresas fornecedoras de computadores, devem ser extintos/convertidos, uma vez que há necessidade contínua de formação de recursos humanos para atender esse segmento do mercado. Os cursos plenos de Bacharelado em Sistemas de Informação substituem os atuais cursos de Tecnologia em Processamento de Dados com grandes vantagens.

A seguir mostra-se quais as matérias que devem compor cada um dos perfis de cursos da área de computação e informática e como elas devem ser detalhadas. 

            Cursos 
Matérias 	Bacharelado em Ciência da Computação	Engenharia de Computação	Bacharelado em Sistemas de Informação	Licenciatura em Computação	
3.1.1.1 Programação	As disciplinas devem cobrir, com abrangência e profundidade, pelo menos uma linguagem de programação desta matéria (primeira linguagem de programação). Devem cobrir também com abrangência e profundidade paradigmas de linguagens de programação, estrutura de dados e pesquisa e ordenação de dados
	As disciplinas devem cobrir, com abrangência e profundidade, pelo menos uma linguagem de programação desta matéria (primeira linguagem de programação). Devem cobrir também com abrangência e profundidade paradigmas de linguagens de programação, estrutura de dados e pesquisa e ordenação de dados	As disciplinas devem cobrir todas as principais linguagens de programação com abrangência e profundidade. Devem cobrir também com abrangência e profundidade estrutura de dados e pesquisa e ordenação de dados

	As disciplinas devem cobrir todas as principais linguagens de programação com abrangência e profundidade. Devem cobrir também com abrangência e profundidade estrutura de dados e pesquisa e ordenação de dados.

	
3.1.1.2 Computação e Algoritmos 	As disciplinas devem cobrir esta matéria com abrangência e profundidade 	As disciplinas devem cobrir esta matéria com abrangência e profundidade	As disciplinas devem cobrir esta matéria de forma abrangente e geral 	As disciplinas devem cobrir esta matéria com abrangência e profundidade	
3.1.1.3 Arquitetura de Computadores	As disciplinas devem cobrir esta matéria com abrangência e profundidade	As disciplinas devem cobrir esta matéria com abrangência e profundidade	As disciplinas devem cobrir esta matéria de forma abrangente e geral. 	As disciplinas devem cobrir esta matéria de forma abrangente e geral. 	
3.1.2 Matemática	As disciplinas devem cobrir a matemática discreta, teoria dos grafos, análise combinatória e lógica desta matéria com abrangência e profundidade. Os demais conteúdos desta matéria devem ser cobertos conforme o grau de abrangência e profundidade com que as matérias da formação tecnológicas são introduzidas e os tipos de problemas a serem resolvidos com a matemática (estatística, pesquisa operacional etc.) 	As disciplinas devem cobrir os conteúdos de matemática discreta, teoria dos grafos, análise combinatória e lógica desta matéria com abrangência e profundidade. Os demais conteúdos desta matéria devem ser cobertos conforme o grau de abrangência e profundidade com que as matérias da formação tecnológicas são introduzidas e os tipos de problemas a serem resolvidos com a matemática (estatística, pesquisa operacional etc.) 	As disciplinas devem cobrir a matemática discreta e a lógica desta matéria de forma abrangente e geral. Os demais conteúdos desta matéria devem ser cobertos conforme o grau de abrangência e profundidade com que as matérias da formação complementar são introduzidas e os tipos de problemas a serem resolvidos com a matemática (estatística, pesquisa operacional etc.) 	As disciplinas devem cobrir a matemática discreta, grafos, análise combinatória e lógica desta matéria com abrangência e profundidade.	

3.1.3 Física e Eletricidade	As disciplinas devem cobrir esta matéria em abrangência e profundidade o suficiente para que os alunos compreendam a implementação física dos dispositivos lógicos e possam realizar projetos de hardware. Os alunos deverão, em laboratório, realizar experimentos, como a montagem de 
circuitos lógicos simples, observando os fenômenos elétricos envolvidos na interação dos componentes, observar os fenômenos envolvidos em comunicação de dados e simular sistemas de maior complexidade como arquiteturas de processadores e modelos de sistemas computacionais mais complexos, como equipamentos de comunicação, redes e algoritmos utilizados nos sistemas operacionais.	As disciplinas devem cobrir esta matéria em abrangência e profundidade o suficiente para que os alunos compreendam a implementação física dos dispositivos lógicos e possam realizar projetos de hardware. Os alunos deverão, em laboratório, realizar experimentos, como a montagem de 
circuitos lógicos simples, observando os fenômenos elétricos envolvidos na interação dos componentes, observar os fenômenos envolvidos em comunicação de dados e simular sistemas de maior complexidade como arquiteturas de processadores e modelos de sistemas computacionais mais complexos, como equipamentos de comunicação, redes e algoritmos utilizados nos sistemas operacionais. 	Esta matéria é dispensável	Esta matéria é dispensável	
3.1.4 Pedagogia	Esta matéria é dispensável	Esta matéria é dispensável	Esta matéria é dispensável	As disciplinas devem cobrir esta matéria com abrangência e profundidade	
3.2 Formação tecnológica 	As disciplinas devem cobrir os fundamentos/estruturas de todas as tecnologias e pelo menos uma delas (ênfase) com profundidade com vistas à realização de projetos. A Pratica do Ensino de Computação deve ser dispensada.	As disciplinas devem cobrir os fundamentos/estruturas de todas as tecnologias e pelo menos uma delas (ênfase) com profundidade com vistas à realização de projetos. A Pratica do Ensino de Computação deve ser dispensada.	As disciplinas devem cobrir os fundamentos/estruturas de todas as tecnologias, sem a necessidade, contudo, de capacitar os alunos ao projeto das mesmas. Deve-se usar intensivamente, em laboratório, as tecnologias correntes: banco de dados, engenharia de software, redes de computadores, entre outras. A Pratica do Ensino de Computação deve ser dispensada.	As disciplinas devem cobrir os fundamentos/estruturas de todas as tecnologias, sem a necessidade, contudo, de capacitar os alunos ao projeto das mesmas. As disciplinas devem cobrir a matéria "Prática do ensino de Computação" com abrangência e profundidade, totalizando esta cobertura, em horas, conforme determina a LDB (Art. 65), e a aplicação da pedagogia voltada para o "como ensinar em geral". 	

3.3 Áreas de formação complementar.	As disciplinas devem cobrir pelo menos uma outra área de formação de recursos humanos, de tal forma que os egressos do curso possam interagir com os profissionais próprios da área, na solução de seus problemas. Alem disso, os egressos devem entender, de forma geral, os problemas que os atingem como profissionais: economia, administração, direito, entre outros.	As disciplinas devem cobrir as áreas de controle de sistemas e 
confiabilidade de sistemas. Alem disso, os egressos devem entender, de forma geral, os problemas que os atingem como profissionais: economia, administração, direito, entre outros.	As disciplinas devem cobrir, entre outras, ciência comportamental, ciência da decisão, ciências gerenciais, ciências políticas, pesquisa operacional, sociologia, economia, contabilidade e teoria geral de sistemas de tal forma que os egressos do curso possam compreender com profundidade os problemas das funções das organizações, planejamento, controle, comunicação, tomada de decisão, contabilidade, finanças, vendas, produção, conforme o perfil do curso descrito acima. 	Esta matéria é dispensável.	
3.4 Formação humanística 	As disciplinas devem cobrir esta matéria de forma geral. 	As disciplinas devem cobrir esta matéria de forma geral. 	As disciplinas devem cobrir esta matéria de forma geral. 	As disciplinas devem cobrir esta matéria de forma geral. 	
Observação: Uma formação geral em alguma matéria, contrariamente a uma formação profunda, é obtida tomando conhecimento da matéria de forma sucinta. 
5. Tempos mínimos para os cursos da área de Computação e Informática 
É recomendável que os cursos superiores da área de computação e informática possuam o regime de matrícula por disciplina semestral ou o regime seriado semestral. Cada semestre terá, no mínimo, 400 horas de trabalho acadêmico efetivo, distribuídas, no mínimo, em 100 dias úteis, excluído o tempo reservado para os exames finais, quando houver. Os cursos de tecnologia devem ter quatro semestres e os cursos de graduação, no mínimo, oito semestres.