Ciências da Computação



Yüklə 228 Kb.
səhifə4/4
tarix08.08.2018
ölçüsü228 Kb.
#61225
1   2   3   4

Regime: S1
Tipo: Obrigatória
Língua de Instrução: Português
Horas/Semana: 56
Créditos: 6
Métodos de Ensino:

Aulas teóricas e exercícios práticos.



Programa:

Modelação de sistemas concorrentes: processos, estados, acções, escolha, não determinismo, guardas, propriedades de segurança e progresso;


Concorrência em memória partilhada: exclusão mútua, deadlocks, semáforos, monitores (tipos abstractos de dados concorrentes, variáveis de condição,espera e semânticas de sinalização, invariantes e predicados, concorrência em linguagens orientadas a objectos);
Concorrência em sistemas distribuídos: canais e portos, send e receive, unicast e broacast, modelos síncronos e assincronos, modelo cliente-servidor, faltas em processos e canais, semântica perante faltas, tempo, ordem e causalidade;

Métodos de Avaliação:

Exame escrito e trabalho prático.



Pré-requisitos:

Nenhuns.


Resultados de Aprendizagem:

- Modelar sistemas concorrentes;


- Compreender os principais modelos e primitivas de programação concorrente em memória partilhada;
- Escrever aplicações concorrentes em memória partilhada;
- Compreender os principais modelos e primitivas de programação concorrente em sistemas distribuídos;
- Escrever aplicações concorrentes baseadas em passagem de mensagens.

Bibliografia:

Principles of Concurrent and Distributed Programming: Algorithms and Models, M. Ben-Ari, Prentice-Hall, 2006;

Java Concurrency in Practice, Brian Goetz, Tim Peierls, Joshua Bloch, Addison Wesley, 2006

Programming Erlang, Joe Armstrong, OReilly, 2007



Docentes: Paulo Sérgio Soares Almeida



8506N1 - Computação Gráfica

Regime: S2


Tipo: Obrigatória
Língua de Instrução:

Português

Horas/Semana: 56
Créditos: 6
Métodos de Ensino:

Aulas Teóricas e Teórico-Práticas

Programa:

Introdução à API do OpenGL, contexto histórico. Sistemas de coordenadas e transformações geométricas.Tipos de projecção: ortográfica e perspectiva.

Texturas: Aplicação de imagens a polígonos; coordenadas de texturas, matrizes de texturas. Filtros e outras opções existentes em OpenGL. Mipmapping.

Iluminação Local: Tipos de luzes, componentes da luz, modos de shading: Flat, Gouraud e Phong. As equações para cálculo da Iluminação.

Técnicas de representação de polígonos e sua influência na performance: Display Lists, Vertex Arrays. Análise de performance e detecção de botlenecks.

Técnicas de optimização básicas: View Frustum Culling, Partição Espacial

Shaders (GLSL): Arquitectura e fundamentos. Contexto histórico.

Shaders para texturas e iluminação em GLSL

Texturas Procedimentais e GLSL

Efeitos Avançados através de shaders: non-photorealistic shaders, bump mapping,...

Iluminação - Sombras: Sombras no plano, Shadow Volumes, Shadow Maps, Spherical Wavelets, All-frequency shadows

Métodos de Avaliação:

Prova escrita e trabalho prático realizado em grupo

Pré-requisitos:

Conhecimentos básicos de geometria analítica e programação.

Resultados de Aprendizagem:

Conceber algoritmos para aplicações gráficas em tempo real. Aplicar técnicas de optimização para aumento de desempenho.

Programar efeitos gráficos no GPU.

Analisar, e avaliar soluções algoritmicas para o desenvolvimento de aplicações gráficas 3D.

Bibliografia:

"OpenGL Programming Guide", Woo, Neider, Davis and Schneider, Addison Wesley. Referência obrigatória!

"Interactive Computer Graphics", Edward Angel, Addison Wesley. Boa introdução.

"Real-Time Rendering", Moller and Haines. Boa visão geral do estado da arte.

"OpenGL Shading Language", Randi J. Rost. Excelente livro de introdução à programação de shaders em GLSL.

Docentes:

António Ramires Fernandes





8506N6 - Probabilidades e Aplicaçãoes Aplicações

Regime: S2


Tipo: Obrigatória
Língua de Instrução: Português
Carga Total: 70
Créditos: 7
Métodos de Ensino:

Aulas teóricas, aulas teórico-práticas e aulas de laboratório.

Programa:

Introdução e conceitos básicos. Teoria axiomática. Variáveis aleatórias, vectores aleatórios e distribuições de probabilidade (discretas, absolutamente contínuas e outras). Medidas de localização, dispersão e forma. Momentos, desigualdades e transformadas. Famílias de distribuições univariadas e multivariadas mais comuns. Funções de variáveis aleatórias. O modelo normal e suas propriedades. Distribuições por amostragem em modelos normais. Convergências estocásticas. Teorema Limite Central e leis dos grandes números. Simulação computacional (ao longo do programa).

Métodos de Avaliação:

Avaliação periódica/Exame final escrito.

Um trabalho em laboratório de computação presencial e individual (peso: 45%), um teste de avaliação teórico e prático em laboratório de computação presencial e individual (peso: 45%), no máximo três pequenos trabalhos não presenciais (peso total: 10%)

Pré-requisitos:

Análise real. Conhecimentos de software algébrico programação imperativa.

Resultados de Aprendizagem:

1. Compreender e aplicar os resultados fundamentais da teoria das probabilidades.
2. Conhecer vários modelos paramétricos (discretos e contínuos, univariados e multivariados) e os resultados assimptoticos relacionados.
3. Conhecer técnicas de simulação.
4. Conhecer e aplicar os vários tipos de convergências estocásticas.
5. Adquirir capacidade de usar utilizar software para na resolução de problemas.

Bibliografia:

Murteira, B., Ribeiro, C., Silva, J., Pimenta, C. - Introdução à estatística, Mc. Graw Hill, 2001.
Pestana, D., Velosa, S. - Introdução à probabilidade e à estatística, Fundação Caloustre Gulbenkian, 2002.
Hastings, K. - Introduction to probability with Mathematica, Chapman & Hall/CRC, 2000.

Docentes:


Cecília Maria Vasconcelos Costa Castro Azevedo
Maria Conceição Soares Serra




8506N2 - Processos e Concorrência

Regime: S6

Tipo: Obrigatória

Língua de Instrução: Português

Carga Total: 56

Créditos: 5

Métodos de Ensino:

Aulas teóricas e aulas teórico-práticas para resolução de exercícios.

Programa:

Redes de Petri:

- Modelação de sistemas concorrentes com redes de Petri.

- Semântica operacional baseada em sistemas de transição de estados.

- Propriedades fundamentais de redes: finitude, animação e invertibilidade.

- Cálculo de invariantes de estado.

- Extensões às redes não coloridas: lugares com capacidade explicita e arcos inibidores.

- Ferramentas para especificação e animação de redes de Petri (DaNAMiCS, PIPE).

Lógica Temporal:

- Especificação de propriedades de segurança e animação usando lógica temporal CTL.

- Verificação directa de modelos para a lógica CTL.

- Verificação simbólica de modelos para a lógica CTL baseada em OBDDs.

- Ferramentas para verificação simbólica de modelos (SMV).

Álgebra de Processos:

- Autómatos e sistemas de transição. Interacção e comportamento.

- Modelação de sistemas reactivos em CCS. Semântica operacional. Análise e verificação de transições.

- Cálculo de sistemas reactivos. Equivalência estrita e observacional em CCS. Teorema da expansão. Resolução de equações.

- Cálculo de sistemas móveis. Motivação, sintaxe, semânticas e equivalências entre processos móveis.

- Animação e análise de processos no CWB e no MWB.

Métodos de Avaliação:

Testes individuais.

Pré-requisitos:

Conhecimentos básicos sobre programação concorrente e matemática discreta

Resultados de Aprendizagem:

- Compreender e comparar diferentes modelos e linguagens para especificar sistemas concorrentes.

- Modelar sistemas concorrentes de pequena e media complexidade usando redes de Petri.

- Especificar propriedades de segurança e animação usando lógica temporal.

- Compreender e comprar diferentes técnicas de verificação de modelos para a lógica temporal.

- Utilizar ferramentas para verificar propriedades de sistemas concorrentes.

- Modelar sistemas concorrentes com mobilidade, de pequena e media complexidade, usando álgebras de processos.

- Raciocinar sobre sistemas concorrentes e sistemas móveis usando álgebras de processos.

Bibliografia:

- Petri Nets for Systems Engineering: A Guide to Modeling, Verification, and Applications. Claude Girault and Rüdiger Valk (editors). Springer-Verlag, 2003.

- Elements of Distributed Algorithms: modeling and analysis with petri nets. Wolfgang Reisig. Springer-Verlag, 1998.

- Model Checking. Edmund M. Clarke Jr., Orna Grumberg, and Doron A. Peled. MIT Press, 2001.

- Communicating and mobile systems: the pi calculus. Robin Milner. Cambridge University Press, 1999.

- The pi calculus: A Theory of Mobile Processes. D. Sangiorgi, D. Walker. Cambridge University Press, 2001.

- Reactive Systems: Modelling, Specification and Verification. Luca Aceto, A.Ingólfsdóttir, Kim Larsen, J. Srba. Cambridge University Press, 2007.

Docentes:

Manuel Alcino Cunha

Luís Soares Barbosa





8506N3 - Semântica da Programação

Regime: S2

Tipo: Obrigatória

Língua de Instrução: Português

Horas/Semana: 56

Créditos: 5

Métodos de Ensino:

Aulas teóricas e aulas teórico-práticas para resolução de exercícios.

Programa:

1. Introdução. Sintaxe e semântica. Semântica operacional, denotacional e axiomática.

2. Esquemas de definição e prova por indução.

3. Introdução à semântica operacional de uma linguagem imperativa.

4. Introdução à semântica denotacional e teoria dos domínios.

5. Equivalência entre as semânticas operacional e denotacional de

uma linguagem imperativa.

6. Semântica operacional e denotacional de uma linguagem funcional.

Métodos de Avaliação:

Testes individuais.

Pré-requisitos:

Conhecimentos básicos sobre programação e matemática discreta

Resultados de Aprendizagem:

- Compreender e comparar os diferentes métodos e técnicas

usadas na modelação formal da semântica das linguagens de programação, seus

fundamentos e aplicações.

- Exercitar o uso dessas técnicas e métodos na descrição/concepção de

linguagens de programação e na verificação de equivalências semânticas.

Bibliografia:

- G. Winskel. The formal semantics of programming languages. MIT Press. 1993.

- M. Hennessy. The semantics of programming languages. Wiley. 1990.

- B. Pierce. Types and programming languages}. MIT Press. 2000.

- T. Streicher. Domain-theorectic foundations of functional programs.

World Scientific. 2006.

Docentes:

Luís Soares Barbosa







8506N5 - Teoria dos Números Computacional

Regime: S2


Tipo: Obrigatória
Língua de Instrução: Português
Horas/Semana: 56
Créditos: 6
Métodos de Ensino:

Aulas teóricas e exercícios práticos.

Programa:

Raízes primitivas e índices, aplicação ao estudo de alguns tipos de congruências. Distribuição dos números primos, teorema dos números primos. Testes de primalidade e de pseudo-primalidade. Algoritmos para gerar números primos. Código RSA. Resíduos quadráticos, lei da reciprocidade quadrática Fracções racionais, equações de Pell. Algoritmos de factorização (Fermat, Pollard, via fracções contínuas, etc.). Representação de inteiros como soma de quadrados. Inteiros e primos gaussianos.

Métodos de Avaliação:

Exame escrito.

Pré-requisitos:

Conhecimentos de teoria de números adquiridos em Matemática Discreta.

Resultados de Aprendizagem:

Estudar alguns tipos de congruências não lineares.


Aplicar os conhecimentos sobre fracções contínuas na resolução de certas equações.
Conhecer os principais algoritmos de factorização.
Conhecer os principais testes de primalidade e de pseudo-primalidade.

Bibliografia:

David M. Burton, Elementary Number, Wm. C. Brown, 1989.
Kenneth Rosen, Elementary Number Theory and its applications, Longman, 2000.
Song Y. Yan, Number Theory for Computing, Springer, 2002.

Docentes:


José Pedro Miranda Mourão Patrício

Yüklə 228 Kb.

Dostları ilə paylaş:
1   2   3   4




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə