18
47 Etapa 5 – Curso Matutino Componente *: Sistemas Operacionais Período *: Etapa 5 º Carga Horária *: 68 aulas de 45 minutos cada Carga Horária Semanal*: 2 aulas teóricas e 2 aulas práticas Objetivo*: Apresentar as estruturas fundamentais de sistemas operacionais: gerenciamento de processos, memória, arquivos, E/S, proteção e segurança. Realizar estudos comparativos entre estruturas de sistemas operacionais (Windows, Linux, UNIX). Implementar algoritmos clássicos de gerenciamento com base no núcleo do sistema operacional MINIX, com suporte do simulador Bochs. Ementa *: Visão inicial de Arquiteturas de Computadores. Conceitos fundamentais de Sistemas Operacionais. Tipos de SOs e alternativas de estruturação interna. Arquitetura de computadores. Processos: estado, contexto, gerenciamento pelo kernel, escalonamento, sinais e interrupção. Comunicação entre processos: pipes, FIFOs, filas de mensagens, comunicação via soquetes. Memória virtual: paginação e segmentação, algoritmos de gerência. Sistema de arquivos: estruturação de arquivos, mecanismos de segurança de diretórios. Entrada e saída: dispositivos de E/S, device drivers. Introdução às Redes de computadores: topologias, protocolos. Conteúdo *: 1. Conceitos fundamentais de sistemas operacionais 1.1. Histórico e evolução dos sistemas operacionais 1.2. Tipos de sistemas operacionais: mono-processamento, multiprocessamento, mono-tarefa, multi-tarefa, de rede e distribuído 1.3. Componentes de um sistema operacional 1.4. Serviços, chamadas de sistemas e sua classificação 1.5. Sistemas monolíticos 1.6. Sistemas em camadas 1.7. Máquinas virtuais 2. Gerenciamento de Processos 2.1. Modelos de processos e implementação 2.2. Threads 2.3. Comunicação inter-processos 2.4. Escalonamento 2.5. Sincronização 2.6. Semáforos 2.7. Monitores 2.8. Deadlock (algoritmo de detecção/prevenção) e starvation 2.9. Implementação de gerenciadores de processos (MINIX) 3. Gerenciamento de Memória 3.1. Endereços físicos e virtuais 3.2. Swapping 3.3. Alocação contígua simples e particionada 3.4. Memória virtual 3.5. Paginação 3.6. Segmentação 3.7. Segmentação com paginação 3.8. Algoritmos de substituição de páginas 3.9. Paginação sob demanda e trashing 3.10. Implementação de gerenciadores de memória (MINIX) 4. Gerenciamento de Arquivos 4.1. Conceito de arquivo e sistema de arquivos 4.2. Métodos de acesso 4.3. Estrutura de diretórios 4.4. Proteção e semântica de consistência 4.5. Implementação de sistemas de arquivos 4.6. Eficiência e recuperação de falhas 4.7. Implementação de gerenciadores de arquivos (MINIX) 5. Gerenciamento de Dispositivos 5.1. Camadas de acesso a hardware 5.2. Técnicas de E/S: polling, interrupções e canais de E/S 5.3. Transformação de requisições de E/S em operações de hardware 5.4. Estrutura de armazenamento secundário (discos) 5.5. Estrutura de armazenamento terciário 5.6. Implementação de gerenciadores de dispositivos (MINIX) 6. Proteção e Segurança 6.1. Domínios de proteção

Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

Embed Size (px)

Citation preview

Page 1: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

47

Etapa 5 – Curso Matutino

Componente *: Sistemas Operacionais

Período *: Etapa 5 º

Carga Horária *: 68 aulas de 45 minutos cada

Carga Horária Semanal*: 2 aulas teóricas e 2 aulas práticas

Objetivo*:

Apresentar as estruturas fundamentais de sistemas operacionais: gerenciamento de processos, memória, arquivos, E/S, proteção e segurança. Realizar estudos comparativos entre estruturas de sistemas operacionais (Windows, Linux, UNIX). Implementar algoritmos clássicos de gerenciamento com base no núcleo do

sistema operacional MINIX, com suporte do simulador Bochs.

Ementa *:

Visão inicial de Arquiteturas de Computadores. Conceitos fundamentais de Sistemas Operacionais. Tipos de SOs e alternativas de estruturação interna. Arquitetura de computadores. Processos: estado, contexto, gerenciamento pelo kernel, escalonamento, sinais e interrupção. Comunicação entre processos: pipes, FIFOs, filas de mensagens, comunicação via soquetes. Memória virtual: paginação e segmentação, algoritmos de gerência. Sistema de arquivos: estruturação de arquivos, mecanismos de segurança de diretórios. Entrada e saída: dispositivos de E/S, device drivers. Introdução às Redes de computadores: topologias, protocolos.

Conteúdo *: 1. Conceitos fundamentais de sistemas operacionais

1.1. Histórico e evolução dos sistemas operacionais 1.2. Tipos de sistemas operacionais: mono-processamento, multiprocessamento, mono-tarefa, multi-tarefa, de rede e distribuído 1.3. Componentes de um sistema operacional 1.4. Serviços, chamadas de sistemas e sua classificação 1.5. Sistemas monolíticos 1.6. Sistemas em camadas 1.7. Máquinas virtuais 2. Gerenciamento de Processos

2.1. Modelos de processos e implementação 2.2. Threads 2.3. Comunicação inter-processos 2.4. Escalonamento 2.5. Sincronização 2.6. Semáforos 2.7. Monitores 2.8. Deadlock (algoritmo de detecção/prevenção) e starvation

2.9. Implementação de gerenciadores de processos (MINIX) 3. Gerenciamento de Memória

3.1. Endereços físicos e virtuais 3.2. Swapping

3.3. Alocação contígua simples e particionada 3.4. Memória virtual 3.5. Paginação 3.6. Segmentação 3.7. Segmentação com paginação 3.8. Algoritmos de substituição de páginas 3.9. Paginação sob demanda e trashing 3.10. Implementação de gerenciadores de memória (MINIX) 4. Gerenciamento de Arquivos

4.1. Conceito de arquivo e sistema de arquivos 4.2. Métodos de acesso 4.3. Estrutura de diretórios 4.4. Proteção e semântica de consistência 4.5. Implementação de sistemas de arquivos 4.6. Eficiência e recuperação de falhas 4.7. Implementação de gerenciadores de arquivos (MINIX) 5. Gerenciamento de Dispositivos

5.1. Camadas de acesso a hardware 5.2. Técnicas de E/S: polling, interrupções e canais de E/S 5.3. Transformação de requisições de E/S em operações de hardware 5.4. Estrutura de armazenamento secundário (discos) 5.5. Estrutura de armazenamento terciário 5.6. Implementação de gerenciadores de dispositivos (MINIX) 6. Proteção e Segurança

6.1. Domínios de proteção

Page 2: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

48

6.2. Estrutura de domínios 6.3. Matrizes de acesso 6.4. Mecanismos de lock-key 6.5. Proteção baseada em capacidade e em linguagens 6.6. Problema da segurança 6.7. Autenticação e autorização 6.8. Threats de programa e de sistemas 6.9. Monitoramento de threats

Critério de Avaliação*: A nota final é baseada em:

P1: média ponderada de provas e exercícios, e

PF: nota da Prova Final realizada no final do semestre. O cálculo da nota final (NF) é feito como NF= (6*P1 + 4*PF)/10

Bibliografia Básica *: TANENBAUM, A. S., WOODHULL, A. S., Sistemas operacionais: Projeto e Implementação. 2.ed. Editora Bookman, 2000.

Bibliografia Complementar : SILBERSCHATZ, A., GALVIN, P.B. Operating system concepts. 5th ed. Reading: Addison-Wesley, 1998. STALLINGS, W. Operating systems : internals and design principles. 4th ed.

Upper Saddle River: Prentice-Hall, 2001. TANENBAUM, A. S. Modern operating systems. 2nd ed. Upper Saddle River: Prentice-Hall, 2001.

Situação *: Ativo

Page 3: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

49

Componente *: Paradigmas de Linguagens

Período *: Etapa 5 º

Carga Horária *: 68 aulas de 45 minutos cada

Carga Horária Semanal*: 4 aulas teóricas

Objetivo*:

Introduzir os conceitos fundamentais para descrição de linguagens de programação. Apresentar os principais paradigmas de programação e comparar as funcionalidades das linguagens mais comuns em cada paradigma.

Ementa *:

Linguagens funcionais. Ambientes e fechamentos. Lazy evaluation. Linguagens baseadas em e orientadas a objetos. Linguagens lógicas. Linguagens paralelas e concorrentes. Noções de semântica de linguagens de programação.

Conteúdo *: 1. Conceitos Fundamentais em Linguagens de Programação

1.1. Distância cognitiva entre linguagens 1.2. Classificação das linguagens de programação em função da distância

cognitiva 1.3. Conceito de paradigma de programação e a classificação de Ambler 1.4. Linguagens multi-paradigma

1.5. Descrição de linguagens de programação 1.6. Noções de implementação de linguagens de programação (análise

léxica, análise sintática, análise semântica e geração de código/interpretação)

2. Paradigma Imperativo

2.1. Fundamentos da programação imperativa 2.2. Conceito de statement e suas variantes 2.3. Controle de fluxo em statements

2.4. Programação com invariantes 2.5. Tipos: representação, estáticos e dinâmicos 2.6. Conceito de binding e suas variantes 2.7. Ativação de procedimentos e funções 2.8. Estudo comparativo entre as linguagens Pascal e C

3. Paradigma Orientado a Objetos

3.1. Fundamentos de programação orientada a objetos: 3.2. Classes-base, classes derivadas e os mecanismos de inicialização,

herança e controle de acesso 3.3. Invariância, covariância e contravariância de tipos 3.4. Polimorfismo e late binding 3.5. Estudo comparativo entre as linguagens Smalltalk, C++ e Java

4. Paradigma Orientado a Aspectos 4.1. Problema de entanglement em código 4.2. Conceitos fundamentais de programação orientada a aspectos: 4.3. Levantamento de interesses ortogonais, instrumentação de código e o

processo de weaving 4.4. Aspectos estáticos e dinâmicos 4.5. Aspectos hierárquicos e orientados a fluxos de execução 4.6. Estudo comparativo entre as linguagens AspectC++ e AspectJ

5. Paradigma Funcional

5.1. Conceitos fundamentais de programação funcional

5.2. Noções das bases matemáticas da programação funcional (-cálculo) 5.3. Expressões simbólicas e listas 5.4. Manipulação de listas e o mecanismo de lazy evaluation 5.5. Passagem de ambiente e de continuação 5.6. Estudo comparativo entre as linguagens ML, Lisp e Scheme

6. Paradigma de Programação em Lógica

6.1. Conceitos fundamentais de programação em lógica 6.2. Noções dos mecanismos de resolução, substituição e unificação 6.3. Árvores de Busca e mecanismos de cortes/falhas 6.4. Estudo comparativo entre as linguagens Gödel e PROLOG

7. Paradigma Concorrente

7.1. Conceitos fundamentais de programação concorrente: processos, threads, regiões críticas, acesso concorrente.

7.2. Mecanismos de sincronização em linguagens para acesso concorrente: semáforos, monitores e rendezvous.

7.3. Problemas de starvation e deadlock 7.4. Estudo comparativo dos mecanismos de programação concorrente em

ADA, Java e Concurrent C++.

Page 4: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

50

8. Outros Paradigmas de Linguagens

8.1. Linguagens transformacionais (JESS,CLIPS) 8.2. Linguagens relacionais (SQL) 8.3. Linguagens baseadas em scripts (linguagens para shells, linguagens

para interfaces, linguagens para WEB, linguagens para processamento de texto)

8.4. Linguagens baseadas em marcação (SGML, HTML, XML) 8.5. Linguagens baseadas em propagação de restrições (Oz)

Critério de Avaliação*: A nota final é baseada em:

P1: média ponderada de provas e exercícios, e

PF: nota da Prova Final realizada no final do semestre. O cálculo da nota final (NF) é feito como NF= (6*P1 + 4*PF)/10

Bibliografia Básica *: SETHI, R. Programming Languages: Concepts and Constructs. 2.ed. Reading:

Addison- Wesley, 1996.

Bibliografia Complementar : FRIEDMAN, D.P., WAND, M., HAYNES, C.T. Fundamentos de Linguagem de Programação. 2.ed. São Paulo: Berkeley, 2001. GHEZZI, C., JAZAYERI, M. Programming Language Concepts. 3.ed. New York: John Wiley, 1998. LADDAD, R. AspectJ in Action: Practical Aspect-Oriented Programming. New York: Manning Publications. LOUDEN, K.C. Programming Languages: Principles and Practice. 2.ed. New York: Course Technology: 2002. MELLO, A.C.V., SILVA, F.S.C. Princípios de Linguagens de Programação. São Paulo: Editora Edgard Blücher, 2003. PIERCE, B.C. Types and Programming Languages. Boston: MIT Press, 2002. PRATT, T.W., ZELKOWITZ, M.V. Programming Languages: Design and Implementation. Upper-Saddle River: Prentice Hall, 1999. SCOTT, M.L. Programming Language Pragmatics.2.ed. New Jersey: Morgan

Kauffman, 2005. SEBESTA, R.W. Concepts of Programming Languages. 7.ed. Reading: Addison- Wesley, 2005.

Situação *: Ativo

Page 5: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

51

Componente *: Teoria dos Grafos

Período *: Etapa 5º

Carga Horária *: 68 aulas de 45 minutos cada

Carga Horária Semanal*: 4 aulas teóricas

Objetivo*:

Introduzir os conceitos e algoritmos fundamentais em grafos. Apresentar alguns resultados clássicos e algoritmos para resolução de problemas que podem ser modelados através de grafos.

Ementa *:

Grafos e subgrafos. Árvores. Conectividade. Grafos eulerianos e hamiltonianos. Emparelha-mentos. Grafos planares Coloração de arestas e vértices. Grafos orientados, redes e fluxos.

Conteúdo *: 1. Conceitos Básicos

1.1. Grafos e grafos simples 1.2. Isomorfismo de grafos 1.3. Matrizes de incidência e adjacência 1.4. Subgrafos 1.5. Graus de vértices 1.6. Caminhos e fundamentos de conexidade 1.7. Ciclos 1.8. Problema do caminho mínimo 2. Árvores

2.1. Conceitos básicos 2.2. Arestas e vértices de corte 2.3. Fórmula de Cayley 3. Conexidade

3.1. Conceitos básicos 3.2. Critérios de conexidade 3.3. Blocos 4. Trilhas Eulerianas e Ciclos Hamiltonianos

4.1. Trilhas Eulerianas 4.2. Problema do Carteiro Chinês 4.3. Ciclos Hamiltonianos 4.4. Problema do Caixeiro Viajante 5. Emparelhamentos

5.1. Conceitos Básicos 5.2. Emparelhamentos e coberturas em grafos bipartidos 5.3. Emparelhamentos perfeitos 6. Coloração de Arestas

6.1. Número aresta-cromático 6.2. Teorema de Vizing 6.3. Problema de tabelas de horários (Timetabling) 7. Conjuntos Independentes e Cliques

7.1. Conjuntos independentes 7.2. Teoremas de Ramsey, Turán e Schur 8. Coloração de Vértices

8.1. Número cromático 8.2. Teoremas de Brooks e Hajós 8.3. Polinômios cromáticos 9. Grafos Planares

9.1. Conceitos básicos 9.2. Grafos duais 9.3. Fórmula de Euler 9.4. Pontes 9.5. Teorema de Kuratowski 9.6. Teorema das cinco cores e a conjectura das quatro cores 10. Grafos Orientados

10.1. Conceitos básicos 10.2. Caminhos e ciclos orientados 11. Fluxos em Redes

11.1. Redes 11.2. Fluxos e cortes 11.3. Teoremas do Fluxo-Máximo/Corte-Mínimo e Menger 11.4. Fluxos viáveis

Critério de Avaliação*: A nota final é baseada em:

P1: média ponderada de provas e exercícios, e

PF: nota da Prova Final realizada no final do semestre. O cálculo da nota final (NF) é feito como

Page 6: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

52

NF= (6*P1 + 4*PF)/10

Bibliografia Básica *: DIESTEL, R. Graph Theory. 2nd ed. New York : Spriger-Verlag, 2000. BONDY, J.A., MURTY, U. S. R. Graph Theory with Applications. London: Macmillan Press, 1976.

Bibliografia Complementar : CORMEN, T. H., LEISERSON, C.E., RIVEST, R. L. Introduction to Algorithms. New York : McGraw-Hill, 1994. CHARTRAND, G., LESNIAK, L. Graphs and Digraphs. 4.ed. Boca Raton: Chapman e Hall, 2005. SCHEINERMAN, E. R. Matemática Discreta: Uma Introdução. São Paulo, Pioneira Thomson Learning, 2002. PAPADIMITRIOU, C.H., STEIGLITZ, K. Combinatorial Optimization: Algorithms and Complexity. Mineola: Dover, 1998. SZWARCFITER, J.L. Grafos e algoritmos computacionais. 3.ed. RJ:Campus,1988.

Situação *: Ativo

Page 7: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

53

Componente *: Banco de Dados

Período *: Etapa 5º

Carga Horária *: 85 aulas de 45 minutos cada

Carga Horária Semanal*: 3 aulas teóricas e 2 aulas práticas

Objetivo*:

Introduzir os principais conceitos da área de banco de dados. Apresentar técnicas de modelagem de dados e linguagens de consulta a banco de dados. Discutir normalização baseada em dependências funcionais e técnicas de indexação e hashing.

Ementa *:

Conceitos de bases de dados. Modelos de dados: relacional, redes, hierárquico, orientado a objetos. Distribuição por replicação e por particionamento. Teoria relacional. Dependências funcionais, formas normais. Mapeamento em hierarquias de classes. Restrições de integridade e de segurança, no modelo relacional e no orientado a objetos. Triggers. Linguagens de declaração e de manipulação. Administração de banco de dados. Dicionários de dados. Linguagens de consulta. Geradores de linguagem. Gerenciadores comerciais. Privacidade em banco de dados.

Conteúdo *: 1. Conceitos fundamentais de bancos de dados

1.1. Objetivos e aplicações sistemas de banco de dados 1.2. Classificação de bancos de dados: relacionais, objeto-relacionais, orientados a objeto, temporais, espaciais e semi-estruturados 1.3. Componentes de um sistema de banco de dados 1.4. Projeto de bancos de dados 1.5. Armazenamento e consulta 1.6. Gerenciamento de transações 1.7. Data Mining e análise 2. Modelo entidade-relacionamento

2.1. Processo de projeto de bancos de dados 2.2. Diagramas entidade-relacionamento 2.3. Conjuntos de entidades fracas 2.4. Extensões do modelo entidade-relacionamento 3. Modelo relacional

3.1. Estruturas de bancos de dados relacionais 3.2. Linguagems relacionais (álgebra relacional, cálculo de domínio, SQL, QBE, Datalog) 3.3. Mapeamento de modelos E-R em estruturas relacionais 3.4. Restrições (integridade de domínio, unicidade de chaves candidatas e integridade referencial) 3.5. Álgebra relacional 3.6. Álgebra relacional estendida 4. SQL

4.1. Definição de dados 4.2. Estrutura básica de consultas SQL 4.3. Operações em conjuntos 4.4. Funções agregadas 4.5. Sub-consultas aninhadas 4.6. Views 4.7. Atualizações em bases (INSERT, UPDATE e DELETE) 5. Normalização

5.1. Boas práticas de projeto relacional 5.2. Teoria das dependências funcionais 5.3. Decomposição usando formas normais básicas (1ª., 2ª. e 3ª. formas normais, Forma Normal de Boyce Codd ) 5.4. Decomposição baseada em dependências multivaloradas 6. Armazenamento e indexação

6.1. Armazenamento em meio físico 6.2. Organização de arquivos e registros 6.3. Arquivo de índices 6.4. Arquivos de índices baseados em B-árvores e árvores B+ 6.5. Hashing dinâmico e estático 7. Transações

7.1. Conceito de transação 7.2. Estados de transações 7.3. Propriedades ACID 7.4. Serialização 7.5. Recuperação de falhas 8. Controle de Concorrência

8.1. Protocolos baseados em bloqueios (locks)

Page 8: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

54

8.2. Protocolos baseados em timestamp 8.3. Protocolos baseados em validação

Critério de Avaliação*: A nota final é baseada em:

P1: média ponderada de provas e exercícios, e

PF: nota da Prova Final realizada no final do semestre. O cálculo da nota final (NF) é feito como NF= (6*P1 + 4*PF)/10

Bibliografia Básica *: ELMASRI, R., NAVATHE, S.B. Fundamentals of database systems. 5.ed. Reading : Addison-Wesley, 2006.

Bibliografia Complementar : DATE, C. J. Introdução a sistemas de banco de dados. 7ª ed. RJ : Campus 2000. OZSU, M.T., VALDURIEZ, P. Princípios de Bancos de Dados Distribuídos. Rio de Janeiro: Campus, 2001. SETZER, V.W., SILVA, F.S. Bancos de Dados. São Paulo : Edgar Blücher, 2005. SILBERSCHATZ, A., KORTH, H.F., SUDARSHAN, S. Database Systems Concepts. 5.ed. New York: McGraw-Hill, 2005.

Situação *: Ativo

Page 9: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

55

Componente *: Lógica Matemática

Período *: Etapa 5º

Carga Horária *: 51 aulas de 45 minutos cada

Carga Horária Semanal*: 3 aulas teóricas

Objetivo*:

Apresentar os conceitos fundamentais de lógica de 1ª ordem clássica (cálculo proposicional e de predicados) e lógica temporal, com aplicações em processos de resolução lógica para provadores automáticos de teoremas e formalização de propriedades de programas.

Ementa *: Cálculo proposicional. Cálculo de predicados. Noções de semântica. Lógicas não-clássicas. Aplicações.

Conteúdo *: 1. Fundamentos de Lógica Matemática

1.1. Origens da Lógica Matemática 1.2. Lógica de 1ª ordem clássica (cálculo proposicional e de predicados) e lógicas não-clássicas (lógica temporal, lógica fuzzy, lógica linear) 1.3. Aplicações clássicas de Lógica Matemática em Computação 1.3.1. Provadores automáticos de teoremas 1.3.2. Formalização de propriedades sintáticas e semânticas de programas 2. Cálculo Proposicional

2.1. Operadores booleanos 2.2. Fórmulas proposicionais 2.3. Interpretação booleana 2.4. Equivalência lógica e substituição 2.5. Satisfazibilidade, validade e consequência lógica 2.6. Tableaux semântico 2.7. Provas dedutivas 2.8. Sistemas de Gentezen e Hilbert 3. Cálculo de Predicados

3.1. Relações e predicados 3.2. Interpretações 3.3. Equivalência lógica e substituição 3.4. Tableaux semântico 3.5. Provas dedutivas 3.6. Funções e termos 3.7. Forma clausal 3.8. Modelos de Herbrand 3.9. Noções de modelos finitos e infinitos 4. Resolução e as Bases Lógicas da Programação em Lógica 4.1. Resolução ground

4.2. Substituição e unificação 4.3. Resolução geral 4.4. Teorias e prova automática de teoremas 5. Lógica Temporal

5.1. Sintaxe e semântica da lógica temporal 5.2. Sistema dedutivo para lógica temporal linear proposicional 5.3. Tableaux semântico 5.4. Aplicações de lógica temporal 6. Formalização de Programas

6.1. Axiomatização de uma linguagem 6.2. Lógica HL (Hoare Logic) e provas de programas (corretude total e parcial)

6.3. Noções de especificação formal em Z

Critério de Avaliação*: A nota final é baseada em:

P1: média ponderada de provas e exercícios, e

PF: nota da Prova Final realizada no final do semestre. O cálculo da nota final (NF) é feito como NF= (6*P1 + 4*PF)/10

Bibliografia Básica *: BEN-ARI, M. Mathematical Logic for Computer Science. New York: Springer, 2003.

Bibliografia Complementar : ABE, J.M., SCALZITTI, A., SILVA FILHO, J.I. Introdução à Lógica para Ciência da Computação. 2.ed. São Paulo: Arte & Ciência, 2002. HALTENBERG, W. A Concise Introduction to Mathematical Logic. New York: Springer: 2006. HEDMAN, S. A First Course in Logic: Introduction to Model Theory, Proof Theory, Computability and Complexity. Oxford: Oxford University Press, 2004. NERODE, A., SHORE, R.A. Logic for Applications (Texts in Computer Science).

Page 10: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

56

New York: Springer, 2005.

Situação *: Ativo

Page 11: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

57

Componente *: Linguagens Formais e Autômatos

Período *: Etapa 5º

Carga Horária *: 51 aulas de 45 minutos cada

Carga Horária Semanal*: 3 aulas teóricas

Objetivo*:

Introduzir os conceitos básicos de linguagens formais, destacando a hierarquia de linguagens de Chomsky. Para cada classe de linguagens apresentada, serão evidenciados os principais algoritmos de reconhecimento.

Ementa *:

Alfabetos, palavras e linguagens. Gramáticas. Hierarquia de Chomsky. Linguagens regulares e autômatos finitos. Linguagens livres de contexto e autômatos de pilha. Linguagens sensíveis ao contexto e máquinas de Turing com fita limitada. Linguagens recursivamente enumeráveis e Máquinas de Turing. Modelos alternativos de linguagens.

Conteúdo *: 1. Alfabetos, palavras, linguagens e gramáticas

1.1. Alfabetos 1.2. Palavras 1.3. Linguagens 1.4. Gramáticas (definição, derivação, representação e implementação) 2. Hierarquia de Chomsky

2.1. Aspectos históricos e relações com linguagens naturais 2.2. Linguagens regulares 2.3. Linguagens livres de contexto 2.4. Linguagens sensíveis ao contexto 2.5. Linguagens recursivamente enumeráveis 3. Linguagens regulares

3.1. Abordagem operacional 3.1.1. Autômatos finitos e determinísticos 3.1.2. Autômatos finitos não-determinístiocs 3.1.3. Autômatos finitos não-determinísticos com transições vazias 3.1.4. Conversões entre classes de autômatos 3.1.5. Minimização de estados 3.1.6. Propriedades algébricas de linguagens regulares 3.1.7. Autômatos finitos e o processo de análise léxica 3.2. Abordagem denotacional (expressões regulares) 3.3. Abordagem axiomática (gramáticas regulares) 3.4. Autômatos finitos como analisadores léxicos 3.5. Geradores automáticos de analisadores léxicos 4. Linguagens livres de contexto

4.1. Gramáticas livres de contexto 4.2. Autômatos à pilha e o processo de análise sintática 4.3. Propriedades algébricas de linguagens livres de contexto 4.4. Algoritmos de reconhecimento 4.5. Geradores automáticos de analisadores sintáticos (Yacc/Bison, JavaCup e SableCC) 5. Linguagens sensíveis ao contexto

5.1. Gramáticas sensíveis ao contexto 5.2. Autômatos linearmente limitados 5.3. Propriedades algébricas de linguagens sensíveis ao contexto 6. Linguagens recursivamente enumeráveis e recursivas

6.1. Noções sobre Máquinas de Turing 6.2. Linguagens recursivamente enumeráveis 6.3. Linguagens recursivas 6.4. Gramáticas irrestritas 6.5. Propriedades algébricas de linguagens recursivamente enumeráveis e recursivas

Critério de Avaliação*: A nota final é baseada em:

P1: média ponderada de provas e exercícios, e

PF: nota da Prova Final realizada no final do semestre. O cálculo da nota final (NF) é feito como NF= (6*P1 + 4*PF)/10

Bibliografia Básica *: LEWIS, H. R., Papadimitrou, C. H. Elements of the theory of computation. Upper

Saddle River : Prentice-Hall, 1998. MENEZES, P. F. Linguagens formais e autômatos. 3. ed. Porto Alegre : Sagra Luzzatto, 2000.

Bibliografia Complementar : SALOMAA, A. Formal languages. Boston : Academic Press, 1987. DIVERIO, T.A., MENEZES, P.B. Teoria da Computação: Máquinas Universais e

Page 12: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

58

Computabilidade. Porto Alegre: Sagra Luzzatto, 1999. FLOYD, R.W., BEIGEL, R. Language of Machines: An Introduction to Computability and Formal Languages. New York: Computer Science Press, 1994. GREENLAW, R., HOOVER, H.J. Fundamentals of the Theory of Computation: Principles and Practice. San Francisco: Morgan Kauffman, 1998. HOPCROFT, J. E., MOTWANI, R., ULLMAN, J. D. Introduction to automata theory, languages, and computation. 2nd ed. Reading : Addison-Wesley, 2000. SIPSER, M. Introduction to the Theory of Computation. Boston: PWS Publishing, 1997.

Situação *: Ativo

Page 13: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

86

3b - COMPONENTE CURRICULAR: Disciplinas Optativas

Linha I - Engenharia de Software

Etapa 5 – Curso Matutino

Componente *: Engenharia de Software (Optativa I)

Período *: Etapa 5º

Carga Horária *: 68 aulas de 45 minutos cada

Carga Horária Semanal*: 4 aulas teóricas

Objetivo*: Introduzir conteúdos avançados em engenharia de software.

Ementa *:

Preceitos de engenharia. Aplicação ao desenvolvimento e evolução de softwares: normas e métodos. Ciclos de vida em desenvolvimento e manutenção de softwares. Medição. Gerência de equipe e de versão de software. Aferição da qualidade.

Conteúdo *: 1. Padrões internacionais de Engenharia de Software

1.1. Necessidade de boas práticas e padrões

1.2. Taxonomia dos Padrões IEEE para Engenharia de Software

1.3. Leitura, adequação e aplicação dos padrões IEEE

2. Processos de levantamento de requisitos

2.1. Levantamento, análise e especificação de requisitos

2.2. Rastreabilidade de requisitos

2.3. Tipos de processos de levantamento de requisitos

2.4. Padrão IEEE Standard 830-1998 – Especificação de Requisitos de Software

3. Processos de projeto e desenvolvimento

3.1. Tipos de processos de projeto

3.2. Tipos de processos de desenvolvimento

3.3. Projeto e desenvolvimento de sistemas concorrentes

3.4. Projeto e desenvolvimento de sistemas de tempo real

3.5. Projeto e desenvolvimento de sistemas de missão crítica

4. Processos de suporte em Engenharia de Software

4.1. Gerenciamento de configuração

4.2. Padrão IEEE 828-1988 – Planos de Gerenciamento de Configuração de Software

4.3. Processos de auditoria e revisão de software

4.4. Padrão IEEE 1028-1997 – Revisões de Software

4.5. Processos de documentação de software

4.6. Padrão IEEE 1063-2001 – Documentação de Software

4.7. Processos de infra-estrutura

4.8. Processos de educação e treinamento

Critério de Avaliação*: A nota final é baseada em:

P1: média ponderada de provas e exercícios, e

PF: nota da Prova Final realizada no final do semestre. O cálculo da nota final (NF) é feito como NF= (6*P1 + 4*PF)/10

Bibliografia Básica *: TAHYER, R. Software Engineering: The Supporting Process. New York: Willey,

2005.

THAYER, R. Software Engineering: The Development Process. New York: Wiley, 2005.

Bibliografia Complementar : GHEZZI, C., JAZAYERI, M., MANDRIOLI, D. Fundamentals of Software Engineering. Upper Saddle: Prentice Hall, 2000. HUMPHREY, W.S. Introduction to the Team Software Process. Reading: Addison-Wesley, 2000.

Page 14: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

87

HUMPHREY, W.S. Managing the Software Process. Reading: Addison-Wesley, 2002. PETERS, J.F., PEDRYCZ, W. Engenharia de Software: Teoria e Prática. Rio de Janeiro: Editora Campus, 2001. PRESSMAN, Roger S. Software engineering: a practitioner’s approach. 5. ed. McGraw-Hill, 2000. SCHACH, S.R. Object-Oriented and Classical Software Engineering. 6.ed. Boston: McGraw-Hill, 2005.

SOMMERVILLE, I. Software Engineering. 8.ed. Upper Saddle River: Addison-Wesley, 2006.

Situação *: Ativo

Page 15: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

100

Linha II: Processamento Gráfico.

Etapa 5 – Curso Matutino

Componente *: Geometria Computacional (Optativa I)

Período *: Etapa 5º

Carga Horária *: 68 aulas de 45 minutos cada

Carga Horária Semanal*: 4 aulas teóricas

Objetivo*:

Apresentar o conceito de problema geométrico e suas aplicações. Estudar e implementar algoritmos geométricos para problemas clássicos, com ênfase em estruturas de dados geométricas, eficiência, robustez geométrica e numérica.

Ementa *:

Intersecção de segmentos. Intersecção de polígonos. Triangularização de polígonos. Localização de pontos. Fechos convexos. Diagramas de Voronoi. Triangularização de Delaunay.

Conteúdo *: 1. Fundamentos de Geometria Computacional

1.1. Classes de problemas em Geometria Computacional 1.2. Algoritmos geométricos 1.3. Estruturas de dados geométricas 1.4. Eficiência, degenerescência, robustez geométrica e numérica 1.5. Exemplo de motivação (Fecho Convexo Bidimensional) 2. Intersecção de segmentos de reta

2.1. Problema de intersecção de segmentos de retas e aplicações 2.2. Lista de arestas duplamente ligada 2.3. Algoritmos clássicos para o problema 2.4. Determinação de sobreposição de subdivisões poligonais 2.5. Aplicações em operações booleanas gráficas (união, intersecção e diferença) 3. Triangulação de polígonos

3.1. Problema da triangulação de polígonos e aplicações 3.2. Triangulação de polígonos monótonos 3.3. Particionamento poligonal em polígonos monótonos 4. Busca ortogonal em intervalos

4.1. Problema da busca em intervalos e aplicações 4.2. Busca em intervalos unidimensionais 4.3. Estruturas de dados para buscas ortogonais em intervalos bidimensionais 4.4. Árvores intervalares d-dimensionais, d ≥ 3 4.5. Conjuntos de pontos em posição geral 5. Localização de pontos

5.1. Problema de localização de pontos e aplicações 5.2. Mapas trapezoidais 5.3. Algoritmo incremental aleatório para localização 5.4. Casos degenerados e seu tratamento 6. Diagramas de Voronoi e Triangulação de Delaunay

6.1. Definição, propriedades básicas e aplicações do Diagrama de Voronoi 6.2. Algoritmos clássicos para cálculo dos Diagramas de Voronoi 6.3. Triangulação de conjunto de pontos planares 6.4. Triangulação de Delaunay e sua computação 6.5. Relação entre Diagramas de Voronoi e Triangulação de Delaunay 7. Fechos Convexos

7.1. Problema do fecho convexo d-dimensional e aplicações 7.2. Cálculo de fechos convexos bidimensionais e tridimensionais 7.3. Fechos convexos e interseção de semi-espaços 8. Particionamento de Espaço

8.1. Problema de particionamento geométrico e aplicações 8.2. Árvores BSP bidimensionais e tridimensionais 8.3. Quadtrees e aplicações 8.4. Octrees e aplicações

Critério de Avaliação*: A nota final é baseada em:

P1: média ponderada de provas e exercícios, e

PF: nota da Prova Final realizada no final do semestre. O cálculo da nota final (NF) é feito como NF= (6*P1 + 4*PF)/10

Bibliografia Básica *: de BERG, M., van KREVELD, M., OVERMARS, M., SCHWARZKOPF, O. Computational Geometry: Algorithms and Applications. 2.ed. New York: Springer, 2000.

Page 16: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

101

Bibliografia Complementar : CORMEN, Thomas H.; LEISERSON, Charles E.; RIVEST, L.R. Introduction to algorithms. Cambridge : The MIT Press, 2000. O’ROURKE, J. Computational Geometry in C (2

nd edition). Cambridge: Cambridge

Press, 1998. PREPARATA, F.P., SHAMOS, M.I. Computational Geometry: An Introduction. New York: Springer, 1993.

Situação *: Ativo

Page 17: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

102

Componente *: Interação Humano-Máquina (Optativa I)

Período *: Etapa 5º

Carga Horária *: 68 aulas de 45 minutos cada

Carga Horária Semanal*: 4 aulas teóricas

Objetivo*:

Introduzir os conceitos fundamentais para projeto, prototipação e avaliação de interação humano-máquina (HCI) nos mais variados ambientes multimidiáticos (gráficos, áudio, vídeo, háptico). Estudar restrições cognitivas e perceptuais que afetam projeto de interfaces. Destacar a importância de escolha adequada de técnicas de interatividade para produção de software com alto grau de usabilidade. Estudar tecnologias para prototipar e implementar interfaces, bem como avaliar seus projetos e implementações.

Ementa *:

Interfaces homem-máquina. Acessibilidade. Usabilidade. Metáforas. Interfaces 2D e 3D. Métodos de projeto de interfaces. Bibliotecas para desenvolvimento de interfaces. Portabilidade. Avaliação de interfaces.

Conteúdo *: 1. Linguagem, comunicação e sistemas interativos

1.1. Aspectos fundamentais de linguagem: sintaxe, semântica e pragmática 1.2. Linguagem como comunicação e meio de interfaceamento 1.3. Fenômenos pragmáticos em comunicação (turn-taking, reparo, dentre outros) 1.4. Aspectos semióticos em comunicação e interação 1.5. Linguagens especializadas 1.6. Noções de reúso de interação (por exemplo, history lists) 1.7. Sistemas computacionais interativos 1.8. Usabilidade, acessibilidade e mobilidade 1.9. Aplicações de sistemas computacionais interativos 2. Aspectos cognitivos e perceptuais em interação

2.1. Noções de arquitetura cognitiva 2.2. Diversidade humana, com ênfase em usuários com necessidades especiais 2.3. Fundamentos de fenômenos e teorias de memória, percepção, atenção e vigilância, habilidades para solução de problemas, aquisição de aprendizado e habilidades, motivação 2.4. Modelos de ação humana 2.5. Modelos conceituais de usuários 3. Dispositivos de interação

3.1. Características principais de dispositivos de entrada/saída 3.2. Dispositivos de entrada 3.3. Dispositivos de saída 3.4. Dispositivos virtuais 4. Ergonomia

4.1. Antropometria humana em relação ao ambiente de trabalho 4.2. Noções de limites cognitivos e sensoriais humanos 4.3. Efeitos sensoriais e perceptuais de tecnologias de interação 4.4. Arranjos de displays e controles 4.5. Aspectos de controle físico e psicológico em interação 4.6. Considerações ergonômicas para usuários com necessidades especiais. 5. Técnicas e Arquiteturas de interação

5.1. Técnicas de entrada 5.2. Técnicas de saída 5.3. Técnicas de interação 5.4. Arquiteturas de interação 6. Projeto e desenvolvimento de sistemas interativos

6.1. Fundamentos de projeto gráficos 6.2. Processos de Engenharia de Software e sistemas interativos 6.3. Técnicas de análise de tarefas 6.4. Técnicas de especificação e projeto (objetos/ações) 6.5. Independência de dispositivo e e aplicação 6.6. Técnicas de prototipação (storyboarding, vídeo, prototipação rápida) 6.7. Representação de dados e algoritmos 6.8. Estudo comparativo entre toolkits para desenvolvimento de sistemas interativos 7. Avaliação de sistemas interativos

7.1. Importância da avaliação de sistemas interativos 7.2. Aspectos fundamentais em avaliação 7.3. Avaliação de conformidade com as especificações 7.4. Avaliação de usabilidade 7.5. Avaliação empírica baseada em aspectos formativos e somatórios

Critério de Avaliação*: A nota final é baseada em:

P1: média ponderada de provas e exercícios, e

Page 18: Etapa 5 Curso Matutino - mackenzie.com.br · Controle de fluxo em statements ... Estudo comparativo dos mecanismos de programação concorrente em ADA, Java e Concurrent C++. 50

103

PF: nota da Prova Final realizada no final do semestre. O cálculo da nota final (NF) é feito como NF= (6*P1 + 4*PF)/10

Bibliografia Básica *: STONE, D. et al. User Interface Design and Evaluation. New York: Morgan Kauffman, 2005.

Bibliografia Complementar : COHEN, M.H., GIANGOLA, J.P., BALOGH, J. Voice User Interface Design. New York: Addison-Wesley Professional, 2004. deSOUZA, C.S. The Semiotic Engineering of Human-Computer Interaction. Boston: MIT Press, 2005. HACKOS, J.T. REDISH, J.C. User and Task Analysis for Interface Design. New York: John Wiley, 1998. LAUSEN, S. User Interface Design: A Software Engineering Perspective. New York: Addison-Wesley, 2005. SHARP, H., PREECE, J., ROGERS, Y. Interaction Design. New York: Wiley, 2002.

Situação *: Ativo