English
Universidade do Minho
Escola de Engenharia
Mestrado Integrado em Engenharia Informática
Departamento de Informática
O Curso Objetivos Estrutura Curricular Calendário História
 
Início
Informações/Avisos
Área Científica
Créditos p/ Área
Plano de Estudos
4.º ano
5.º ano
Projeto de Eng. Informática
Dissertação
Formulários & Docs
Contactos

Plano de Estudos

Áreas Científicas

Área CientíficaSiglaCréditos
Obrigatórios
Créditos
Optativos
Ciências BásicasCB55
Informática de BaseIB60
Ciências ComplementaresCC40
Ciências e Tecnologias de Especialidade/ Enga InformáticaCTE-EI140
Qualquer Área CientíficaQAC5

Unidades Curriculares

1.ºano/1.ºSemestre
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
Álgebra Linear EICB semestral140TP:605
Cálculo CB semestral 140 TP:60 5
Tópicos de Matemática Discreta CB semestral 140 TP:60 5
Programação Funcional CB semestral 140 T:30, TP:30 5
Elementos de Engenharia de Sistemas CC semestral 140 T:30, PL:30 5
Laboratórios de Informática IIB semestral 140 PL:30 5
1.ºano/2.ºSemestre
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
Sistemas de ComputaçãoCBsemestral140 T:30, PL:30 5
Análise CB semestral 140 TP:60 5
Tópicos de Física Moderna CC semestral 140 T:30, TP:30 5
Lógica EI CB semestral 140 TP:60 5
Programação Imperativa CB semestral 140 T:30 TP:30 5
Laboratórios de Informática II IB semestral 140 PL:30 5
2.ºano/1.ºSemestre
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
Introdução aos Sistemas Dinâmicos CB semestral140TP:605
Estatística Aplicada CC semestral 140 T:30, TP:30 5
Engenharia Económica CC semestral 140 T:30, TP:30 5
Arquitetura de Computadores IB semestral 140 T:30, PL:30 5
Comunicação de Dados IB semestral 140 T:30, TP:30 5
Algoritmos e Complexidade CB semestral 140 T:30, TP:30 5
2.ºano/2.ºSemestre
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
Sistemas Operativos IB semestral 140 T:30, PL:30 5
Programação Orientada aos Objetos CB semestral 140 T:30, PL:30 5
Eletromagnetismo EE CC semestral 140 T:30, TP:30 5
QAC semestral 140Variável* 5
Cálculo de Programas IB semestral 140 T:30, TP:30 5
Laboratórios de Informática III IB semestral 140 PL:30 5
*A Opção UMinho será escolhida pelos alunos entre um conjunto de UCs que todos os anos será disponibilizado ao nível da Universidade. Em consequência, o número de horas de contacto é variável.
3.ºano/1.ºSemestre
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
Bases de Dados IB semestral 140 T:30, PL:305
Desenvolvimento de Sistemas de Software CTE-EI semestral 140 T:30, PL:30 5
Modelos Determinísticos de Investigação Operacional CC semestral 140 T:30, TP:30 5
Sistemas Distribuídos IB semestral 140 T:30, PL:30 5
Redes de Computadores IB semestral 140 T:30, PL:30 5
Métodos Numéricos e Otimização não Linear CC semestral 140 T:30, TP:30 5
3.ºano/2.ºSemestre
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
Sistemas de Representação de Conhecimento e Raciocínio CTE-EI semestral 140 T:30, PL:30 5
Modelos Estocásticos de Investigação Operacional CC semestral 140 T:30, TP:30 5
Computação Gráfica CTE-EI semestral 140 T:30, PL:30 5
Comunicações por Computador CTE-EI semestral 140 T:30, PL:30 5
Processamento de Linguagens IB semestral 140 T:30, TP:30 5
Laboratórios de Informática IV IB semestral 140 PL:30 5
4.ºano/1.ºSemestre
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
perfil A - UC1CTE-EIsemestral 140 T:15; PL:305
perfil A - UC2CTE-EIsemestral 140 T:15; PL:305
perfil B - UC1CTE-EIsemestral 140 T:15; PL:305
perfil B - UC2CTE-EIsemestral 140 T:15; PL:305
Opção I1CTE-EIsemestral 140 T:15; PL:305
Opção I2CTE-EIsemestral 140 T:15; PL:305
4.ºano/2.ºSemestre
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
perfil A - UC3CTE-EIsemestral 140 T:15; PL:305
perfil A - UC4CTE-EIsemestral 140 T:15; PL:305
perfil B - UC3CTE-EIsemestral 140 T:15; PL:305
perfil B - UC4CTE-EIsemestral 140 T:15; PL:305
Laboratório de Engenharia Informática CTE-EIsemestral 280PL:9010
5.ºano
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
Projeto de Engenharia Informática CTE-EIsemestral 420 PL:9015
Dissertação em Engenharia Informática CTE-EIanual 1260 OT:1545


Perfis de Especialização

Perfil de Especialização Bio: Bioinformática (Coord.: professor M.P. Rocha)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Algoritmos para Análise de Sequências BiológicasIB1.º semestre 140T:15;PL:305
UC2 - Laboratórios de BioinformáticaIB1.º semestre 140T:15;PL:305
UC3 - Algoritmos Avançados de BioinformáticaIB2.º semestre 140T:15;PL:305
UC4 - Extração de Conhecimento de Bases de Dados BiológicasIB2.º semestre 140T:15;PL:305
Perfil de Especialização BI: Business Intelligence(Coord.: professor O.M. Belo)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Sistemas OperacionaisIB1.º semestre 140T:15;PL:305
UC2 - Data WarehousingIB1.º semestre 140T:15;PL:305
UC3 - Processamento Analítico de DadosIB2.º semestre 140T:15;PL:305
UC4 - Análise de DadosIB2.º semestre 140T:15;PL:305
Perfil de Especialização CG: Computação Gráfica(Coord.: professor A.R. Fernandes)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Visualização e Iluminação IIB1.º semestre 140T:15;PL:305
UC2 - Visão por ComputadorIB1.º semestre 140T:15;PL:305
UC3 - Visualização e Iluminação IIIB2.º semestre 140T:15;PL:305
UC4 - Tecnologias e AplicaçõesIB2.º semestre 140T:15;PL:305
Perfil de Especialização CPD : Computação Paralela e Distribuída(Coord.: professor A.J. Proença)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Arquiteturas AvançadasIB1.º semestre 140T:15;PL:305
UC2 - Paradigmas de Computação ParalelaIB1.º semestre 140T:15;PL:305
UC3 - Algoritmos ParalelosIB2.º semestre 140T:15;PL:305
UC4 - Engenharia dos Sistemas de ComputaçãoIB2.º semestre 140T:15;PL:305
Perfil de Especialização EA : Engenharia de Aplicações(Coord.: professor A.L. Sousa)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Infraestruturas de Centro de DadosIB1.º semestre 140T:15;PL:305
UC2 - Administração de Base de DadosIB1.º semestre 140T:15;PL:305
UC3 - Arquiteturas AplicacionaisIB2.º semestre 140T:15;PL:305
UC4 - Sistemas InterativosIB2.º semestre 140T:15;PL:305
Perfil de Especialização ESS : Engenharia de Sistemas de Software(Coord.: professor J.M. Fernandes)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Engenharia de RequisitosIB1.º semestre 140T:15;PL:305
UC2 - Arquiteturas de SoftwareIB1.º semestre 140T:15;PL:305
UC3 - Gestão do Processo de SoftwareIB2.º semestre 140T:15;PL:305
UC4 - Engenharia WebIB2.º semestre 140T:15;PL:305
Perfil de Especialização ERS : Engenharia de Redes e Serviços(Coord.: professor A.T. Santos)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Tecnologias e Protocolos de RedeIB1.º semestre 140T:15;PL:305
UC2 - Gestão de RedesIB1.º semestre 140T:15;PL:305
UC3 - Redes Multi-ServiçosIB2.º semestre 140T:15;PL:305
UC4 - Serviços e Sistemas MultimédiaIB2.º semestre 140T:15;PL:305
Perfil de Especialização MFES : Métodos Formais em Engenharia de Software(Coord.: professor J.S. Pinto)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Especificação e ModelaçãoIB1.º semestre 140T:15;PL:305
UC2 - Análise e Teste de SoftwareIB1.º semestre 140T:15;PL:305
UC3 - Arquitetura e CálculoIB2.º semestre 140T:15;PL:305
UC4 - Verificaçao FormalIB2.º semestre 140T:15;PL:305
Perfil de Especialização PLC : Processamento de Linguagens e Conhecimento(Coord.: professor P.R. Henriques)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Gramáticas na Compreensão de SoftwareIB1.º semestre 140T:15;PL:305
UC2 - Processamento e Representação de InformaçãoIB1.º semestre 140T:15;PL:305
UC3 - Scripting no Processamento de Linguagem NaturalIB2.º semestre 140T:15;PL:305
UC4 - Processamento e Representação de ConhecimentoIB2.º semestre 140T:15;PL:305
Perfil de Especialização SDC : Sistemas Distribuídos e Criptografia(Coord.: professor José B. Almeida)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Criptografia e Segurança da InformaçãoIB1.º semestre 140T:15;PL:305
UC2 - Paradigmas de Sistemas DistribuídosIB1.º semestre 140T:15;PL:305
UC3 - Segurança de Sistemas InformáticosIB2.º semestre 140T:15;PL:305
UC4 - Sistemas Distribuídos ConfiáveisIB2.º semestre 140T:15;PL:305
Perfil de Especialização SI : Sistemas Inteligentes(Coord.: professor C.A. Rodrigues)
Unidade CurricularÁrea CientíficaTipoTempo de Trabalho(Horas)créditos
TotalContacto
UC1 - Agentes InteligentesIB1.º semestre 140T:15;PL:305
UC2 - Aprendizaem e Extração de ConhecimentoIB1.º semestre 140T:15;PL:305
UC3 - Computação NaturalIB2.º semestre 140T:15;PL:305
UC4 - Sistemas AutónomosIB2.º semestre 140T:15;PL:305


Unidades Curriculares - Programas

Álgebra Linear EI

Objectivos de aprendizagem

Pretende-se que o estudante adquira:
- conhecimentos básicos de Álgebra Linear;
- capacidade de aplicar os conhecimentos adquiridos em diversos contextos;
- aptidões de cálculo e raciocínio matemáticos de modo a construir argumentos rigorosos;
- capacidade de comunicar, por escrito e oralmente, em linguagem matemática;
- capacidade de trabalhar em grupo;
- capacidade de aprender de modo autónomo.

Conteúdos programáticos

Matrizes.
Determinantes.
Sistemas de Equações.
Espaços Vectoriais Reais.
Valores e Vectores Próprios.
Aplicações Lineares.

Metodologias de ensino e avaliação

As aulas funcionaram de acordo com a tipologia TP (teórico/prática). Os conceitos teóricos são
imediatamente seguidos de vários exemplos de aplicação dos mesmos.
A Avaliação periódica inclui: a realização de dois testes escritos e individuais; os testes individuais
realizam-se na data previamente definida, com igual peso de 50% cada um; em cada um dos testes, a
classificação não poderá ser inferior a 7.5 valores.
Modelo II- Avaliação final : exame final.
A classificação final do aluno é a classificação obtida no exame

Bibliografia

- “Introdução à Álgebra Linear”, Ana Paula Santana e João Filipe Queiró. Gradiva, Trajectos Ciência, 2010
- “Introduction to Linear Algebra”, Serge Lang. Springer, Undergraduate Texts in Mathematics, 1985

Cálculo

Objectivos de aprendizagem

No final do semestre os alunos deverão ser capazes de:
aplicar resultados de continuidade e diferenciabilidade ao estudo das propriedades e ao esboço dos
gráficos de funções reais de variável real;
calcular primitivas de funções aplicando as técnicas apresentadas;
aplicar o conceito de integral ao cálculo de áreas e de comprimento de curvas. Reconhecer e calcular
integrais impróprios;
interpretar e aplicar critérios de convergência de séries numéricas;
analisar em que condições uma série de potências define uma função e estabelecer algumas das suas
propriedades.

Conteúdos programáticos

Funções reais de variável real
Generalidades sobre funções. Extremos relativos e absolutos. Limites e continuidade. Função composta e
função inversa. Funções trigonométricas e hiperbólicas e suas inversas. Derivada de uma função;
interpretação geométrica. Polinómio de Taylor. Regra de L'Hôpital.
Primitivas
Definição e propriedades. Integrais indefinidos. Integração imediata, por partes e por substituição.
Integração de funções racionais.
Integral de Riemann
Definição e propriedades. Teoremas fundamentais do cálculo. Aplicações ao cálculo de áreas e de
comprimento de curvas. Integrais impróprios.
Séries numéricas
Definição e propriedades. Convergência de séries. Critérios de convergência.
Séries de potências
Definição e propriedades. Raio e intervalo de convergência. Série de Taylor.

Metodologias de ensino e avaliação

Aulas de exposição da matéria acompanhadas com a apresentação de exemplos. Aulas de resolução de
exercícios, de modo a que o aluno interiorize os conceitos apresentados e adquira capacidade de trabalho
autónomo.
Avaliação periódica, baseada em dois elementos intercalares de avaliação, ou avaliação final por exame.

Bibliografia

Cálculo, T. M. Apostol, Vol. I, Reverté
Introdução à Análise Matemática, J. Campos Ferreira, Fundação Gulbenkian
Cálculo, James Stewart, Pioneira

Tópicos de Matemática Discreta

Objectivos de aprendizagem

Transmissão de conhecimentos específicos: cálculo proposicional, indução nos naturais, teoria de
conjuntos, relações binárias, conjuntos finitos e infinitos.
Contribuição para a aquisição de um conjunto de competências:
- capacidade de assimilar informação e de a comunicar;
- capacidade de construir argumentos rigorosos, recorrendo ao raciocínio matemático;
- capacidade de expressão escrita e oral;
- capacidade de aprendizagem independente.

Conteúdos programáticos

Noções Básicas de Lógica
Teoria Elementar de Conjuntos
Indução natural
Funções
Relações binárias
Grafos

Metodologias de ensino e avaliação

As aulas funcionam de acordo com a tipologia TP (teórico/prática). A exposição teórica dos conteúdos e a
demonstração de resultados é complementada com a exploração de exemplos e resolução de problemas.
Com a avaliação periódica, os alunos são avaliados com base em dois testes escritos e individuais, em
datas previamente afixadas, com peso de 40% e 60%, respetivamente.
Os alunos que não tenham sucesso no quadro da Avaliação Periódica podem submeter-se a avaliação por
exame.

Bibliografia

How to prove it: a structure approach, Daniel Velleman, Cambridge University Press [1994]
The Foundations of Mathematics, Ian Stewart, David Tall, Oxford Science Publication [1990]
Proofs and Fundamentals : a first course in Abstract Mathematics, Ethan D. Bloch, Birkhuser [2000]
Mathematical Fundamentals of Computer Science, P. Fejer, D. Simovici, Springer-Verlag [1991]
Álgebra, um primeiro curso, Anto ́nio Monteiro, Isabel Matos, Escolar Editora [1995]

Programação Funcional

Objectivos de aprendizagem

No final desta unidade curricular o aluno deverá ser capaz de programar dentro do paradigma funcional,
tendo por base a linguagem Haskell. Nomeadamente:
- Escrever programas em Haskell.
- Definir tipos indutivos e codificar funções recursivas.
- Definir tipos algébricos para modelar problemas, e programar com esses tipos.
- Compreender a noção de tipo principal e de polimorfismo.
- Usar funções de ordem superior.

Conteúdos programáticos

O paradigma funcional da computação; a linguagem de programação Haskell.
Expressões, valores e redução. Tipos básicos, tipos algébricos, indução e recursividade.
Programação funcional de ordem superior. Polimorfismo, classes, tipos principais. Modularidade. Monads.

Metodologias de ensino e avaliação

2 horas teóricas por semana, onde os conceitos teóricos são leccionados .
2 horas teórico práticas por semana, onde são propostos execícios e problemas de programação.
Avaliação por exame final escrito. Em alternativa os alunos podem obter 60% da sua classificação
respondendo ao longo do semestre a 4 mini-testes.

Bibliografia

- Fundamentos da Computação, Livro II: Programação Funcional. José Manuel Valença e José Bernardo
Barros. Universidade Aberta, 1999.
- Programming in Haskell. Graham Hutton. Cambridge University Press, 2007.
- Introduction to Functional Programming using Haskell. Richard Bird. Prentice-Hall, 1998.
- Haskell: the Craft of Functional Programming. Simon Thompson. Addison-Wesley, 1999.
- Introduction to Functional Programming. Richard Bird and Philip Wadler. Prentice-Hall, 1988.
- A Gentle Introduction to Haskell. Paul Hudak, John Peterson and Joseph Fasel.

Elementos de Engenharia de Sistemas

Objectivos de aprendizagem

O principal objectivo desta UC é introduzir a área a Engenharia de Sistemas através da sua caracterização,
metodologia e ferramentas representativas. Dentro destas últimas são abordados modelos de simulação,
de filas de espera e de optimização de sistemas em rede. Os resultados de aprendizagem são:
- Identificar sistemas onde modelos de simulação, filas de espera e de optimização, podem ser utilizados
na definição da sua configuração ou no melhoramento do seu desempenho.
- Obter e interpretar as principais medidas de desempenho de um sistema de filas de espera de Markov
dadas as taxas de chegada e de serviço.
- Utilizar modelos de rede para representar e optimizar problemas reais.
- Obter soluções óptimas através da utilização de software em modelos referidos no ponto anterior.
- Obter soluções aproximadas através da aplicação manual de algoritmos adequados em problemas de
redes de pequena dimensão.

Conteúdos programáticos

Introdução a Sistemas. Modelação de Sistemas. Modelos de Simulação. Tópicos elementares sobre Teoria
das Filas de Espera. Modelação e optimização de sistemas em rede. Aplicações e utilização de software
(Arena, folhas de cálculo e solvers de programação linear em folhas de cálculo).

Metodologias de ensino e avaliação

A UC tem aulas teóricas de exposição e aulas laboratoriais.
Nas aulas laboratoriais são formados grupos que, com a utilização de computador, resolvem exercícios.
Nestas aulas são também acompanhados os trabalhos.
A avaliação consiste num trabalho (simulação) a realizar em grupo e em dois testes individuais (filas de
espera e optimização de sistemas em rede). O módulo de simulação corresponde a 7 valores, o módulo de
filas de espera a 5 valores e o módulo de optimização de sistemas em rede a 8 valores.

Bibliografia

F. Alvelos, Introdução a Sistemas, slides de apoio à leccionação de EES, UM, 2010.
F. Alvelos, Filas de Espera, slides de apoio à leccionação de EES, UM, 2010.
F. Alvelos, Optimização de Sistemas em Rede, slides de apoio à leccionação de EES, UM, 2010.
H.G. Daellenbach and D.C. McNickle, Management Science - Decision making through systems thinking,
Palgrave MacMillan, 2005.
F. Glover, D. Klingman and N. V. Philips, Network models in optimization and their applications in practice,
Wiley, 1992.
W.D. Kelton, R.P. Sadowski and D.T. Sturrock, Simulation with Arena, McGraw-Hill, 2004.

Laboratórios de Informática I

Objectivos de aprendizagem

Aprendizagem prática de conceitos básicos de programação. Ciclo edição/compilação/teste. Programação
na shell de um sistema operativo.
Contacto com um sistema para produção de documentação de qualidade. Prática em desenvolvimento de
projectos de software em grupo.

Conteúdos programáticos

Parte I - O Unix como iniciação prática aos sistemas operativos. Sistema de ficheiros, "kernel" e "shell".
Interpretação de comandos. Pipes, entrada, saída e redireccionamento. Padrões (wildcards). Processos.
Estudo do repertório dos principais comandos da "shell". O commando "man" e a ajuda interactiva.
Parte II - LaTeX: Utilização do sistema LaTeX para elaboração de relatórios técnicos de qualidade.
Linguagens de "mark-up" por oposição a "what you see is what you get". Separação entre texto fonte e
texto impresso. Estrutura do documento fonte. Formatação de texto: geração da impressão a partir da
fonte. Ambientes, macros e seu sabor funcional. Os ambientes itemize, enumerate, description e verbatim.
Índices. Referências cruzadas, tabelas, imagens e corpos flutuantes. Listas de tabelas e de figuras. Escrita
de formulas matemáticas. O BibTeX.
Parte III - Projecto: programação na linguagem funcional Haskell através da realização de um projecto em
grupo de pequena dimensão.

Metodologias de ensino e avaliação

Breve sessão introdutória no início de cada aula seguida de prática laboratorial com base em guiões.
Avaliação contínua. Duas fichas de avaliação individual. Projecto de grupo (final).

Bibliografia

Fundamentos da Computação, Livro II: Programação Funcional. José Manuel Valença e José Bernardo
Barros. Universidade Aberta, 1999.
Tutorial de introdução ao Unix. (on-line: http://www.ee.surrey.ac.uk/Teaching/Unix/index.html)
A Not So Short Introduction to LaTeX2e. Tobias Oetiker et al. (On-line. Tradução portuguesa por Alberto
Simões).
Introduction to Functional Programming using Haskell. Richard Bird. Prentice-Hall, 1998. Haskell: the craft
of functional programming. Simon Thompson. Addison-Wesley, 1999.

Sistemas de Computação

Objectivos de aprendizagem

Ao completar com sucesso a UC cada estudante deverá demonstrar que adquiriu os seguintes
conhecimentos, capacidades e aptidões:
- reconhecer e discutir a organização e arquitetura dum computador e sua evolução;
- reconhecer e interpretar as principais características da arquitetura de um instraction set;
- examinar e modificar a funcionalidade de programas imperativos (tipo C), com recurso ao assembly e
linguagem máquina;
- aplicar e experimentar técnicas com impacto no desempenho na execução de código;
- utilizar e analisar ferramentas de compilação de programas, e análise e teste de baixo nível de código (em
Unix/Linux);
- aptidões transversais, nomeadamente a capacidade de raciocínio na resolução de problemas, e a
capacidade de comunicação escrita e oral.

Conteúdos programáticos

1. Organização e estrutura de um computador, incluindo a representação de informação numérica num
computador (inteiros e reais).
2. Análise da arquitectura do instruction set (ISA) de um processador genérico, com destaque teórico e
prático para o nível ISA do Intel IA-32 em Unix/Linux.
3. Avaliação do desempenho de computadores, com análise dos principais factores com impacto no
desempenho: paralelismo ao nível da instrução, hierarquia de memória, organização multi-core.

Metodologias de ensino e avaliação

A UC de SC está organizada de modo a que os estudantes que a frequentem possam adquirir
conhecimentos em sessões de exposição de conteúdos com exemplos de aplicação ("aulas teóricas") e
simultaneamente desenvolver vários tipos de competências em sessões teórico-práticas e laboratoriais:
- de esclarecimento de dúvidas na resolução participada dos TPCs nas salas de aula
- na resolução de casos de estudo em ambiente laboratorial homogéneo remotamente acessível.
A avaliação tem 2 componentes:
- uma prova escrita, realizada no fim do semestre (peso: 85%);
- participação nas sessões teórico-práticas (peso: 15%).
A equipa docente aceita o uso de uma "cábula" nas provas escritas, manuscrito e em A4 (não são
permitias fotocópias).

Bibliografia

Computer Systems: A Programmer's Perspective (CS:APP), Randal Bryant and David O'Hallaron, Prentice
Hall, 2nd Ed., 2010
Computer Organization and Design: the hardware/software interface, D.Patterson, J.Henessy, Morgan
Kaufmann Publishers, 4th Ed., 2008
Computer Organization and Architecture - Designing for Performance, William Stallings, Prentice Hall, 8th
Ed., 2009

Análise

Objectivos de aprendizagem

No final do semestre os alunos deverão ser capazes de:
interpretar as noções de continuidade, de derivabilidade direcional e global;
determinar e classificar extremos livres e condicionados de funções reais de várias variáveis reais;
interpretar a noção de integrabilidade de uma função real sobre um subconjunto de R^n;
calcular e interpretar integrais múltiplos, de linha e de superfície.

Conteúdos programáticos

Funções vetoriais de variável real
Limites e continuidade. Derivadas. Curvas em R^2 e em R^3 e suas parametrizações. Trajetória de uma
partícula em movimento: velocidade e aceleração.
Funções reais de várias variáveis reais
Domínios, gráficos e conjuntos de nível. Limites e continuidade. Derivadas parciais, derivadas direcionais
e derivadas. Derivada da função composta. Polinómio de Taylor. Máximos e mínimos locais e
condicionados.
Integrais múltiplos
Áreas, volumes e mudanças de coordenadas. Integrais de linha e de superfície. Teoremas da análise
vetorial.

Metodologias de ensino e avaliação

Aulas de exposição da matéria acompanhadas com a apresentação de exemplos. Aulas de resolução de
exercícios, de modo a que o aluno interiorize os conceitos apresentados e adquira capacidade de trabalho
autónomo.
Avaliação periódica fundamentalmente baseada em dois elementos intercalares de avaliação, ou avaliação
final por exame.

Bibliografia

Cálculo, T. M. Apostol, Reverté
Vector Calculus, Jerrold E. Marsden e Anthony Tromba, New York, W.H. Freeman
Cálculo, James Stewart, Vol. II, Pioneira
Calculus (Single and Multivariable), Hughes-Hallett & al., John Wiley and Sons, Inc..

Tópicos de Física Moderna

Objectivos de aprendizagem

Conhecer a relatividade de Einstein aplicando-a a problemas concretos.
Descrever matematicamente ondas mecânicas e ondas eletromagnéticas e aplicar os conceitos de
reflexão, refração, polarização, interferência e difração da radiação eletromagnética.
Reconhecer a natureza corpuscular da radiação e a existência de níveis de energia discretos na matéria.
Conhecer e aplicar os diversos modelos atómicos.
Reconhecer o dualismo onda-corpúsculo quer para a radiação quer para as partículas.
Interpretar o princípio de incerteza de Heisenberg e os fundamentos da Física Quântica interpretando a
equação de Schrodinger.
Compreender os fundamentos da estrutura atómica e molecular à luz da Mecânica Quântica.
Conhecer a estrutura nuclear e aplicar os conceitos associados à radioatividade.
Compreender os efeitos nocivos da radiação ionizante.
Adquirir conhecimentos básicos sobre as partículas elementares e as interações fundamentais na
natureza. Interpretar o modelo padrão.

Conteúdos programáticos

1. Relatividade Restrita.
2. Movimentos ondulatórios e radiação eletromagética. O espetro eletromagnético.
3. A física pré-quântica - efeito fotoelétrico, radiação do corpo negro, efeito de Compton. O fotão. O
dualismo onda-corpúsculo para a radiação. Modelos atómicos; modelo atómico de Bohr; séries espetrais;
a experiência de Franck-Hertz.
4. Fundamentos da Física Quântica - equação de onda de Schrödinger, a estrutura atómica à luz da
Mecânica Quântica, os números quânticos e a sua interpretação, transições eletrónicas, vibracionais e
rotacionais.
5. O núcleo atómico; desintegrações radioativas; reações nucleares; conservação de energia.
6. Física das partículas; partículas elementares; interações fundamentais. O modelo padrão.

Metodologias de ensino e avaliação

A presença nas aulas teóricas e teórico-práticas é obrigatória.
As aulas teóricas são maioritariamente expositivas. São fornecidos aos alunos apontamentos do tipo
power-points detalhados que devem ser complementados com o estudo dos diversos assuntos na
bibliografia recomendada. Nas aulas teóricas são também feitas diversas demonstrações experimentais e
resolvidos exercícios tipo.
As aulas teórico-práticas são destinadas à consolidação dos conceitos abordados nas aulas teóricas,
através da resolução de problemas. É distribuída atempadamente aos alunos uma lista de exercícios
propostos para estas aulas.
Os alunos que frequentem as aulas podem submeter-se a avaliação periódica realizando três testes em
datas pré-definidas. Os testes têm um peso de 85% na nota final. Os restantes 15% são atribuídos em
função da participação nas aulas. Os alunos que não obtenham, no quadro da avaliação periódica, a nota
mínima de 9.5 valores, terão de se submeter a avaliação por exame de recurso.

Bibliografia

Física, Marcelo Alonso, Edward J. Finn, Escolar Editora, 2012 (Portuguese version) –part of chapters 1, 2,
19, 28-32, 34, 35, 36-41.
Modern Physics, Paul A. Tipler, Ralph A. Llewellyn, third edition – part of chapters 1-7, 11, 12, 13.
Fundamentals of Physics, D. Halliday, R. Resnick, J. Walker, sixth edition, volume 2/extended - part of
chapters 34, 36-45.
Introdução à Física Contemporânea, Ricardo M. Ribeiro

Lógica EI

Objectivos de aprendizagem

No final do semestre o aluno deve ter capacidade para:
1) definir funções por recursão estrutural e fazer demonstrações por indução estrutural;
2) manipular a sintaxe formal do Cálculo Proposicional e do Cálculo de Predicados de 1ª Ordem da Lógica
Clássica;
3) usar fórmulas da Lógica de 1ª Ordem para representar frases em linguagem natural;
4) dar significado a fórmulas e decidir o seu valor lógico, no contexto de uma interpretação;
5) compreender e construir demonstrações formais em dedução natural;
6) conhecer algumas das consequências dos Teoremas da Correção e da Completude.

Conteúdos programáticos

Lógica Proposicional e Lógica de 1ª ordem: Sintaxe, Semântica e Sistemas Dedutivos.

Metodologias de ensino e avaliação

As aulas são de caráter teórico-prático, com exposição das matérias seguida da resolução de exercícios
previamente disponibilizados aos alunos.
A avaliação será feita com base em dois testes escritos, tendo acesso a exame os alunos reprovados na
avaliação periódica.

Bibliografia

Logic and Structure, Dirk van Dalen, Springer, 1994.

Programação Imperativa

Objectivos de aprendizagem

No fim da disciplina, o aluno deverá ser capaz de: resolver problemas decompondo-os em problemas mais
pequenos e especificando algoritmos para cada um destes; resolver problemas envolvendo cálculo
numérico, manipulação de strings, manipulação de ficheiros, armazenamento de informação e
processamento de estruturas de dados (listas e árvores binárias); codificar qualquer algoritmo na
linguagem de programação C.

Conteúdos programáticos

Revisão da noção de Programação Imperativa: objectivos, dificuldades e etapas.
Uma visão global dos paradigmas de programação; panorâmica histórica das linguagens de programação
imperativas;
Análise Descendente de problemas; Noção de Algoritmo Linguagem Algorítmica através de problemasexemplo típicos.
Estudo da linguagem de programação "C": Filosofia e historial; Representação da Informação tipos de
dados; Instruções simples e estruturas de controlo em "C";
Acesso e armazenamento de informação em memória secundária: manipulação de ficheiros;
Introdução ao polimorfismo registos variantes e apontadores para funções.
Algoritmos de Pesquisa e Ordenação.
Recursividade: Adequação da recursividade ao problema a resolver; Implementação de alguns casos
matemáticos de natureza recursiva; Resolução de problemas "try-and-error".
Estruturas de Dados: Listas --- caso geral, Stacks e Queues; Funções Finitas; Estruturas de dados
dinâmicas: apontadores, listas e árvores.

Metodologias de ensino e avaliação

Nesta unidade curricular segue-se um ensino construtivista e orientado ao estudo de caso, que mais
formalmente se pode descrever à custa das vertentes:
Ensino Individualizado: Estudo orientado e Ensino por módulos;
Ensino Socializado: Discussão em pequenos grupos; Brainstorming; Palestras;
Ensino Sócio-Individualizado: Projecto.
A avaliação da aprendizagem envolve: um trabalho de desenvolvimento experimental e escrito, a realizar
em grupo, consubstanciando uma componente de carácter individual.
Tanto a componente individual como a componente de grupo têm limite de execução temporal bem
definido, nunca excedendo o período lectivo. A classificação final é dada na forma: 40% da classificação
provém da componente prática de grupo; 60% da classificação provém da componente individual.
É considerado aprovado o aluno cuja nota final seja superior ou igual a 10 (dez) valores, sendo obrigatório
ter classificação positiva em todos os instrumentos de avaliação.

Bibliografia

Kernighan & Ritchie, The C Programming Language (ANSI C), 2nd edition, Prentice Hall Software series.
1988.
António Manuel Adrego da Rocha, Introdução à Programação Usando C, FCA, 978-972-722-524-8.
António Manuel Adrego da Rocha, Estruturas de Dados e Algoritmos em C, FCA, 978-972-722-295-7.
P. Guerreiro, Elementos de Programação com C, FCA - Editora de Informática, 2001;
Leendert and Ammeraal, Programas e Estruturas de dados em C, Editora Presença, 1994.

Laboratórios de Informática II

Objectivos de aprendizagem

o conhecimento e a capacidade de codificar algoritmos e estruturas de dados numa linguagem de
programação imperativa
* a capacidade de gerar, executar e testar programas codificados em C, usando um conjunto adequado de
utilitários
* o conhecimento e a capacidade de analisar a execução de programas numa dada arquitectura, e as
aptidões de desenvolver e aplicar testes de conformidade em situações de fronteira
* a aptidão para analisar código em assembly e utilizar ferramentas de depuração de programas
* as capacidades e aptidões para descrever, aplicar e avaliar técnicas de optimização de desempenho
* a capacidade trabalhar em equipa e de desenvolver algoritmos para resolver problemas

Conteúdos programáticos

Variáveis
Vectores e matrizes
Ordenação
Estruturas de dados dinâmicas (listas, stacks, queues, árvores binárias de procura)
Monitorização e optimização de código

Metodologias de ensino e avaliação

Aulas laboratoriais onde os alunos desenvolvem um projeto em equipa ao longo do semestre.

Bibliografia

Kernighan e Ritchie, "The C Programming Language (ANSI C)", 2.nd edition, Prentice Hall Software series,
1988
* P. Guerreiro, "Elementos de Programação com C", FCA -- Editora de Informática Lda, série Tecnologias
de Informação, 2ªEdição, 2001

Introdução aos Sistemas Dinâmicos

Objectivos de aprendizagem

1. Descrever técnicas de integração e exemplificar aplicações de equações diferenciais ordinárias.
2. Analisar qualitativamente sistemas de EDOs não-lineares.
3. Aplicar ferramentas computacionais no contexto da unidade curricular.
4. Descrever técnicas de integração e aplicações de equações diferenciais de derivadas parciais.

Conteúdos programáticos

1. Equações diferenciais ordinárias, aplicações à dinâmica de sistemas mecânicos, oscilações lineares.
2. Equações diferenciais com derivadas parciais, análise de Fourier, equação de onda e equação de
difusão.
3. Sistemas não-lineares, sistemas caóticos. Implementação computacional de sistemas dinâmicos.

Metodologias de ensino e avaliação

Aulas teóricas e aulas de resolução de problemas. Avaliação baseia-se em dois ou mais elementos de
avaliação. Por exemplo, testes e trabalhos (individuais ou em grupo).

Bibliografia

1. An introduction to ordinary differential equations, J.C. Robinson, CUP, 2004
2. Differential Equations, Shepley L. Ross, John Wiley & Sons, 1984
3. Análise Complexa e Equações Diferenciais, L. Barreira, IST Press, 2009

Estatística Aplicada

Objectivos de aprendizagem

Aprendizagem de metodologia associada à recolha e análise de dados em estatística. Os objetivos
expressos em resultados de aprendizagem podem ser descritos da seguinte forma:
• Resumir e descrever conjuntos de dados.
• Selecionar uma amostra representativa.
• Interpretar dados de natureza qualitativa e quantitativa.
• Calcular probabilidades e determinar funções de probabilidade.
• Formular e testar hipóteses.
• Usar software específico (SPSS).

Conteúdos programáticos

População e amostra. Tipos de dados e escalas de medida. Estatística descritiva
Conceitos de probabilidade. Variáveis aleatórias e distribuições de probabilidade univariadas. Esperança
matemática. Famílias de distribuições de probabilidade.
Estimação de parâmetros. Intervalos de confiança. Testes de hipóteses simples. Análise da variância
(ANOVA). Regressão e correlação. Testes de bom ajuste para grandes amostras
Uso de software: SPSS.

Metodologias de ensino e avaliação

A UC tem aulas teóricas de exposição da matéria e aulas teórico-práticas de resolução de exercícios
teórico práticos e práticos (em SPSS). Avaliação contínua ao longo do semestre e existência de um exame
final.

Bibliografia

Ana C. Braga, slides de apoio à leccionação de EA, UM, 2012 (disponibilizados na plataforma BB).
Ana C. Braga, Caderno de exercícios TP de EA, UM, 2012 (disponibilizados na plataforma BB).
Ana C. Braga, Formulário de apoio à UC de EA, UM, 2012 (disponibilizados na plataforma BB).
Ana C. Braga, Soluções dos exercícios de EA, UM, 2012 (disponibilizados na plataforma BB).
Guimarães, Rui C. e Cabral, J. A. Sarsfield (1997), “Estatística”, McGraw-Hill
Pestana, M. H. (2003), “Análise de dados para ciências sociais: a complementaridade do SPSS“, Edições
Sílabo.

Engenharia Económica

Objectivos de aprendizagem

O objetivo principal desta UC é proporcionar aos alunos conhecimentos essenciais de economia e gestão
que lhes permitam uma correta tomada de decisão em ambiente empresarial. Os resultados esperados de
aprendizagem são os seguintes: • Compreender o funcionamento de uma economia • Caracterizar as
funções gerais de gestão de uma empresa • Explicar os comportamentos dos agentes económicos e suas
inter-relações nos mercados • Explicar o funcionamento de diferentes estruturas de mercado • Avaliar
aspetos económicos na perspetiva da decisão • Adquirir conhecimentos básicos de natureza financeira •
Aplicar conhecimentos matemáticos e de natureza financeira para descrever e analisar projetos de
investimento. • Aplicar ferramentas de análise económica.

Conteúdos programáticos

Conceitos introdutórios: escolha e escassez; princípio do custo-benefício; custo de oportunidade; lucro
económico. - O modelo da procura e da oferta: os determinantes da oferta e da procura, o equilíbrio de
mercado, utilizações do modelo. - Teoria da procura: da procura individ. à procura de mercado; o conceito
de elasticidade da procura; a estimação da procura - A empresa: definição, objet. e classificação;
formalidades na constituição de uma empresa; o planeamento estratégico - Teoria da oferta: função de
produção; a produção; os rendimentos à escala; os custos; custos no longo prazo e a estrutura do sector Mercados e formação dos preços: a concorrência perfeita; o monopólio. - Conceitos básicos de
matemática financeira: valor do dinheiro no tempo, conceito de equivalência de capitais, atualização e
capitalização - Comparação e seleção de projetos de investimento: opções com igual tempo de vida,
opções com diferente tempo de vida e opções com diferente dimensão de investimento.

Metodologias de ensino e avaliação

As metodologias de ensino previstas incluem: - exposição teórica das matérias a lecionar, - apresentação,
resolução e discussão de exercícios nas aulas teórico-práticas. O método de avaliação previsto consiste
na resolução de testes ao longo do semestre. Os alunos que não tiverem aprovação nos testes terão que
realizar um exame final.

Bibliografia

Managerial Economics in a Global Economy, D. Salvatore, McGraw-Hill, 2nd Edition. Economia da
Empresa, J. Mata, Fundação Calouste Gulbenkian, 2ª Edição, 2002. Contemporary Engineering Economics,
C. Park, McGraw-Hill, 2nd Edition, 2002.
Investment project design: a guide to financial and economic analysis with constraints. Kurowski, L. e
Sussman, D., John Wiley & Sons, 2011. Decisões de investimento. Análise financeira de projectos, Soares,
I; Moreira, J.; Pinho; C. e Couto, J., Edições Sílabo, 2007.

Arquitetura de Computadores

Objectivos de aprendizagem

Identificar e caracterizar as métricas relativas ao desempenho da execução de programas e a sua relação
com a codificação de programas em linguagens de alto nível
Identificar o impacto da hierarquia de memória no desempenho de programas escritos em linguagens de
alto nível
Caracterizar limitações inerentes ao encadeamento de instruções (dependências) e conceber potenciais
soluções
Analisar e justificar o impacto de múltiplas unidades funcionais no desempenho da máquina
Descrever, aplicar e avaliar técnicas de optimização do desempenho
Identificar as oportunidades de exploração de processamento paralelo e caracterizar as limitações
inerentes ao processamento paralelo

Conteúdos programáticos

Avaliação do Desempenho:
-“Benchmarks”: sintéticos, SPEC
-Métricas: tempo de execução, ciclos por instrução (CPI); ciclos por elemento (CPE)
-Metodologias: resolução e precisão do relógio; medição de tempo; contadores de desempenho;
apresentação de resultados
Hierarquia de Memória:
-Conceitos; localidade temporal e espacial; métricas
-Organização: mapeamento, políticas de escrita e substituição
-Codificação de algoritmos: técnicas de codificação para melhoria da localidade
Organização do Processador
-Organização sequencial:fases de execução;
execução encadeada; arquiteturas superescalares
Optimização do Desempenho
otimizações dependentes/independentes da máquina
Arquiteturas Atuais
vetoriais; multicore

Metodologias de ensino e avaliação

A UC é lecionada com uma sessão teórica de 2H e uma sessão laboratorial de 2H semanalmente.
Nas sessões teóricas são lecionados os fundamentos e conceitos. As sessões teóricas são
essencialmente de exposição de matéria e de exposição da resolução de alguns exercícios.
Nas sessões laboratoriais são consolidados os conhecimentos adquiridos nas sessões teóricas, através
da resolução de exercícios. Os vários exercícios permitem aos alunos a consolidação dos conhecimentos
através da aplicação de conhecimentos visando a resolução de uma dado problema e/ou interpretação de
resultados. As sessões laboratoriais servirão ainda para esclarecer dúvidas.
As horas de estudo não presencial deverão ser usadas para preparação das sessões laboratoriais.
A avaliação é efetuada através de dois testes escritos que avaliam grau de obtenção das competências
pretendidas.

Bibliografia

Computer Systems: A Programmer's Perspective (CS:APP), Randal Bryant and David O'Hallaron, Prentice
Hall, 2ªedição, 2011 (http://csapp.cs.cmu.edu)
Computer Organization and Design, David Patterson and John Hennesy, Elsevier, 2009

Comunicação de Dados

Objectivos de aprendizagem

Definir, discutir e relacionar os conceitos teóricos básicos relacionados com os processos de
comunicação de dados e tecnologias de telecomunicações; Explicar os componentes fundamentais dum
sistema de comunicações digital ou analógico; Compreender e relacionar
diversos conceitos da área da Teoria da Informação no contexto dos processos de codificação e
comunicação de dados; Listar e discutir as principais limitações dos sistemas de transmissão;
Compreender os mecanismos básicos de multiplexagem subjacentes aos sistemas de
telecomunicações/transmissão actuais; Capacidade de compreender e analisar a representação no
domínio das frequências (espectro) de sinais analógicos e digitais; Compreender os conceitos
subjacentes aos principais algoritmos, técnicas e ferramentas relacionadas com a digitalização e
processamento de sinais multimédia; Compreender as técnicas e a teorias de suporte que permitem a
detecção e correcção de erros nas comunicações digitais.

Conteúdos programáticos

-Teoria da Informação: Medidas de Informação, Entropia, Codificação de Fontes com/sem memória,
Rendimento e Compressao, Códigos Shannon-fano. Capacidade do canal, Lei de Hartley Shannon
-Digitalização: Teoria da Amostragem; Quantização Uniforme/não uniforme; Ruído de Quantização;
Conversão Analógico/Digital; PCM, Ruído em PCM; Outras tecnicas
-Multiplexagem: Mult. Divisão do Tempo (TDM); Hierarquias PDH/SONET/SDH. TDM estatístico; Modelos de
filas de espera e escalonamento. Mult. Divisão de Frequência (FDM); Técnicas híbridas
-Análise de Sinais: Análise temporal/frequências, Séries de Fourier, Potência, Largura de Banda, Teorema
de Parseval, Modulação
-Análise de Sistemas de Transmissão: Sistemas LIT, Função de transferência, Largura de Banda,
Ganhos/Perdas, Limitações, Ritmo de Nyquist, Ruído, Fitros/sistemas reais/ideais
-Códigos de Controlo de Erros: Códigos de bloco, Distância de Hamming, Capacidade de
detecção/correcção, Circuitos codificadores de códigos cíclicos sistemáticos

Metodologias de ensino e avaliação

Abordando temáticas iminentemente conceptuais (ou teóricas), as aulas teóricas (T) são complementadas
com aulas de índole teórico prático (TP) para treino e consolidação dos temas leccionados nas aulas
teóricas através de exercícios complementares. Quando apropriado, as aulas TPs são também usadas
para discussão, exploração e explicação de tecnologias/normas/aplicações actualmente existentes e que
se relacionam com matéria teórica leccionada.
A metodologia de avaliação será a de avaliação periódica, com 2 testes de avaliação. Cada teste de
avaliação consiste numa prova com questões teórico e teórico práticas abrangendo uma parte da matéria
a definir pelo docente. Adicionalmente as provas incluirão também exercícios que avaliam as matérias
teóricas leccionadas no contexto de problemas/cenários/ normas reais em que as mesmas se podem
aplicar. A nota final será a média das classificações obtidas nestas duas provas.

Bibliografia

- Fundamentos das Telecomunicações, Vasco Freitas, Universidade do Minho, 2003. (including the
chapters: Introdução, Análise de Sinais, Análise de Sistemas, Ruído e Erros, Digitalização, Multiplexagem,
Códigos de Linha , Teoria da Informação, Códigos para Controlo de Erros)
- Principles of Communications, 6th Edition, R.Ziemer, W. Tranter, John Wiley and Sons, 2008
- Communication Systems, 5th Edition, A. Bruce Carlson, Paul B. Crilly, McGraw-Hill Series, 2009

Algoritmos e Complexidade

Objectivos de aprendizagem

O objectivo principal da UC de Algoritmos e Complexidade é a introdução de técnicas para o desenho e
análise de algoritmos. Relativamente aos IEEE – ACM Computing Curricula 2001 esta UC tem a
incumbência de cobrir as unidades obrigatórias AL1–AL3 e ainda parcialmente as opcionais AL6 e AL8 da
área de Algoritmos e Complexidade: [AL1.] Basic algorithmic analysis [core] [AL2.] Algorithmic strategies
[core] [AL3.] Fundamental computing algorithms [core] [AL6.] The complexity classes P and NP [elective]
[AL8.] Advanced algorithmic analysis [elective]
Resultados de aprendizagem:
1. Avaliar a correcção de um algoritmo
2. Determinar a complexidade assimptótica de um algoritmo iterativo ou recursivo.
3. Reconhecer e utilizar estratégias algorítmicas fundamentais.
4. Utilizar estruturas de dados fundamentais (em particular implementações de funções finitas e grafos), e
utilizar algoritmos sobre elas.
5. Reconhecer problemas NP-completos e alguns algoritmos aproximados para a sua resolução.

Conteúdos programáticos

I. Introdução à análise de algoritmos: - Análise de correcção: Introdução à Lógica de Floyd-Hoare.
Anotação de Programas
- Análise de de complexidade: modelo da complexidade assimptótica.
- Estratégias algorítmicas: incremental, greedy, programação dinâmica
- Casos de estudo:algoritmos de ordenação.
II. Estudo de algoritmos fundamentais sobre grafos.
III. Introdução à noção de problema NP-completo
IV. Estruturas de dados fundamentais e questões de eficiência na procura: tabelas de Hash, estruturas
Lineares, hierárquicas (árvores, heaps, árvores-B).

Metodologias de ensino e avaliação

A escolaridade da UC é utilizada da seguinte forma
- Duas horas téoricas (T) semanais são utilizadas para exposição da matéria e apresentação de casos de
estudo.
- Com uma vocação complementar às anteriores, duas horas semanais teórico-práticas (TP) de utilização
flexível, podendo servir para:
* a exposição sucinta de temas não abordados nas aulas teóricas, por se considerar serem
particularmente adequados para a auto-aprendizagem guiada;
* a resolução de exercícios e/ou apresentação de casos de estudo pelo docente;
* outros pontos, como a discussão e acompanhamento de eventuais miniprojectos a desenvolver pelos
alunos. A avaliação é feita através de dois testes, um intercalar e outro final, ambos com peso de 50%. A
estrutura dos testes consiste numa componente de avaliação de competências mínimas (12 valores) e uma
componente de competências complementares (8 valores), sendo que é requisito para a aprovação a
obtenção de 8 valores na componente de competências mínimas.

Bibliografia

. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. In- troduction to
Algorithms, Second Edition. The MIT Press and McGraw-Hill Book Company, 2001.
. Sara Baase. Computer Algorithms. Addison Wesley, second edition, 1988.
. Donald E. Knuth. The Art of Computer Programming, Volume I: Fundamental Algo- rithms, 2nd Edition.
Addison-Wesley, 1973.
. Donald E. Knuth. The Art of Computer Programming, Volume III: Sorting and Se- arching. AddisonWesley, 1973.
. Donald E. Knuth. The Art of Computer Programming, Volume II: Seminumerical Algorithms, 2nd Edition.
Addison-Wesley, 1981. . Robert Sedgewick. Algorithms in C: parts 1-4, Fundamentals, Data Structures, Sorting, and Searching, third edition. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1997.
. Robert Sedgewick. Algorithms in C, part 5: Graph Algorithms, third edition. Addison- Wesley
Professional, 2001.

SIstemas Operativos

Objectivos de aprendizagem

Num sentido lato, o objectivo da unidade curricular é ajudar a ter uma visão coerente e integrada de como
funcionam os sistemas informáticos: o que é, em termos físicos, uma aplicação informática, que recursos
necessita, como interage com outras e com o sistema operativo, que políticas de gestão são mais
adequadas a cada tipo de carga e respectivos custos de implementação, razões para o sistema estar lento,
que atitudes tomar, etc.
No final, espera-se que os estudantes sejam capazes de:
1) Compreender a interação entre os diversos componentes do software de sistemas.
2) Selecionar estratégias de gestão de recursos adequadas à carga e capacidade do sistema.
3) Demonstrar capacidade de escrever pequenos programas concorrentes, controlando correctamente a
interação entre actividades.

Conteúdos programáticos

Introdução aos sistemas operativos modernos. Gestão de processos: objectivos, estratégias de
escalonamento. Noções de programação concorrente: comunicação e sincronização de processos e
threads. Gestão de memória: sistemas de memória real e virtual, paginação e segmentação. Gestão de
periféricos. Gestão de ficheiros

Metodologias de ensino e avaliação

Nas aulas teóricas, mais do que descrever como funcionam os sistemas operativos, procura-se discutir a
motivação para as várias opções em cada um dos componentes do sistema. Esse trabalho é completado
nas aulas práticas com um conjunto de exercícios realizados em computador

Bibliografia

A. Silberschatz et al., Operating System Concepts, John Wiley & Sons, 8ª edição, 2011.
Alves Marques et al., Sistemas Operativos, FCA Editora de Informática, 2ª edição, 2012.

Programação Orientada aos Objetos

Objectivos de aprendizagem

a) compreender os conceitos fundamentais da PPO ( Objectos, Classes, Herança e Polimorfismo; b)
analisar e ilustrar a estruturação de um domínio em classes; c) construir hierarquias de classes utilizando
as noções de classe abstracta, tipo abstracto de dados e polimorfismo; d) compreender a importância das
classes abstractas e herança na concepção de um sistema em POO; e) utilizar linguagens de programação
por objectos para construção de programas de média escala, seguros, robustos e extensíveis.

Conteúdos programáticos

Introdução à Programação por Objectos; Noção de Objecto em POO; Encapsulamento; Classes e
Hierarquias de classes; Herança; Classes Abstractas; Herança simples vs herança múltipla; Herança
múltipla e interfaces.

Metodologias de ensino e avaliação

Aulas teóricas para exposição dos conceitos e aulas práticas laboratoriais para consolidação dos
conhecimentos adquiridos, através da realização de mini-projectos. Exame final escrito e trabalho prático,
de média dimensão, realizado em equipa.

Bibliografia

1. JAVA6 e Programação Orientada pelos Objectos F. Mário Martins, Editora FCA, Série Tecnologias de
Informação, ISBN-978-972-722-624-5, Julho de 2009.
2. Object Oriented Design with Applications G. Booch, The Benjamim Cummings Pub. Company, USA,
1991.
3. Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes & Michael Kölling Fourth
edition Prentice Hall / Pearson Education, 2008, ISBN 0-13-606086-2

Eletromagnetismo EE

Objectivos de aprendizagem

1. Calcular o campo eléctrico para distribuições discretas e contínuas de carga. Usar a lei de Gauss para o
cálculo do campo eléctricos.
2. Aplicar o conceito de potencial eléctrico a distribuições discretas e contínuas de carga.
3. Compreender e usar o conceito de capacidade e de força electromotriz
4.) Descrever o movimento de cargas eléctricas na presença de campos magnéticos
5.) Conhecer as fontes de campo magnético. Calcular o campo magnético de alguns sistemas simles
6.) Conhecer e aplicar o conceito de indução magnética e de indutância.

Conteúdos programáticos

1.) Campo eléctrico
2.) Potencial eléctrico
3.) Capacitância, força electromotriz e circuitos simples
4.) Campo magnético
5.) Fontes do campo magnético
6.) Indução electromagnética

Metodologias de ensino e avaliação

As aulas são apresentadas no quadro com recurso ao uso de materiais multimedia quando necessário. A
avaliação ao longo do semestre é feita por dois testes. As notas de ambos os teste deverão ser superior a
9 valores. O aluno é aprovado se a média dos dois testes for igual ou superior 10 valores. No caso de tal
resultado não ser obtido o aluno submeter-se-à a um exame de recurso.

Bibliografia

1.) H. Young e R. Freedman, University Physics, 13ª edição, Addison-Wesley
2.) R. Serway e J. Jewett , Physics for Scientists and Engineers with Modern Physics, 6ª edição,
Brooks/Cole

Cálculo de Programas

Objectivos de aprendizagem

(i) Construção de programas: escrever programas funcionais de forma composicional, com recurso a
combinadores algébricos.
(ii) Transformação de programas: recurso à algebra da programação para se obterem programas mais
eficientes sem comprometer as sua correcção.
(iii) Análise e compreensão de programas: recurso à factorização em pares "fold" +
"unfold" (hilomorfismos) como forma de se perceber a arquitectura dos algoritmos e sua catalogação.
(iv) Síntese de programas: cálculo de ciclos-for a partir de definições indutivas.
(v) Programação funcional avançada: construir e raciocinar sobre programas funcionais com efeitos sob a
forma de mónades.

Conteúdos programáticos

Teoria e método em programação. Cálculo e raciocínio sobre programas. Composicionalidade.
Combinadores de programas. Modularidade e reutilização. «Pacotes» de programação. Programação
funcional: sua motivação e antecendentes históricos. Composição de funções. Noções de abstracção e de
isomorfismo. Iniciação à estruturação de dados. Combinadores básicos e suas propriedades estruturais
(reflexão, fusão, absorção, cancelamento e de functorialidade). Álgebra de um tipo de dados. Lei da troca.
Introdução às estruturas de dados indutivas regulares. Álgebras de functores. A triologia «cata-ana-hilo».
Recursividade polinomial. Caso de estudo: algoritmos de ordenação. Parametrização e polimorfismo.
Inferência de tipos polimórficos.
Programação genérica. Functores de tipo. Introdução ao politipismo. Programação funcional com efeitos.
Mónades e sua teoria. Construção de programas monádicos. Exemplos: excepções, processamento de
listas, computações com estado. Breve referência ao mónade`i/o'.

Metodologias de ensino e avaliação

(i) Aulas teóricas: conceitos teóricos e demonstrações de programação. (ii) Aulas práticas: resolução de
exercícios de cálculo anunciados em fichas disponíveis na semana anterior.
Avaliação: os alunos podem escolher um dos seguintes métodos de avaliação (época normal): Método A:
2 Fichas individuais (3 questões, sem consulta) a realizar nas aulas TP: 12 valores, com nota mínima de 8
valores. Prova individual escrita (sem consulta e só para alunos com essa nota mínima): 8 valores. Método
B: Prova individual escrita (sem consulta): 20 valores, com nota mínima de 10 valores.

Bibliografia

J.N. Oliveira. Program Design by Calculation. Departamento de Informática, Universidade do Minho. Livro
em preparação: os capítulos relevantes para esta disciplina são o segundo, o terceiro e o quarto. 2011.
R. Bird and O. de Moor. Algebra of Programming. Series in Computer Science. Prentice-Hall International,
1997. C. A. R. Hoare, series editor.
P. Hudak. The Haskell School of Expression - Learning Functional Programming Through Multimedia .
Cambridge University Press, 1st edition, 2000. ISBN 0-521-64408-9.

Laboratórios de Informática III

Objectivos de aprendizagem

- Conhecer os princípios fundamentais da Engenharia de Software, designadamente modularidade,
reutilização, encapsulamento e abstracção de dados, e saber implementá-los em diferentes linguagens de
implementação (C - 1º projeto e Java 2º projeto);
- Complementar experimentalmente os conhecimentos adquiridos nas Unidades Curriculares de
Algoritmos e Complexidade e Programação Orientada aos Objetos;
- Desenhar e codificar dois projetos de média dimensão, a serem entregues e avaliados em várias fases. 1º
projeto Linguagem C Conceitos envolvidos: modularidade, reutilização, grafos, árvores, manipulação de
ficheiros. 2º projeto Linguagem Java Conceitos envolvidos: manipulação de colecções Java, medição de
tempos de operações sobre coleções, construção de interfaces com utilizador (padrão MVC), exploração
dos componentes Swing.

Conteúdos programáticos

- Revisão de princípios de engenharia fundamentais como: modularidade, abstração de dados,
encapsulamento e reutilização;
- Estruturas de dados genéricas em C (árvores e grafos);
- Realização do 1º projeto (em C);
- Revisão do Java Collections Framework (JCF); Implementação de Grafos em Java;
- Criação de Interfaces com o utilizador usando SWING e o modelo MVC (Model-View-Controller);
- Persistência simples de dados em Java (ObjectStreams);
- Realização do 2º projeto (em Java).

Metodologias de ensino e avaliação

As aulas são completamente de tipo laboratorial.
Os alunos realizam dois projetos práticos de grupo (máx. 3 alunos) de dimensão média e fazem
submissões parciais por cada projeto (devidamente programadas).
1º projeto Linguagem C Conceitos envolvidos: modularidade, encapsulamento, reutilização, grafos,
árvores, manipulação de ficheiros.
2º projeto Linguagem Java Conceitos envolvidos: manipulação de coleções Java, medição de tempos de
operações sobre coleções, construção de interfaces com o utilizador (padrão MVC), exploração dos
componentes Swing.
A fórmula que calcula a nota final é:
Nota Final = 40%*Projecto1 + 40%*Projecto2 + 20%*Avaliação Individual.

Bibliografia

1. B. Kerninghan, R. Pike. The Practice of Programming. Addison Wesley, 1999
2. R Kruse, B. Leung, and C. Tondo. Data Structures and Program Design in C. Prentice Hall, 1997.
3. JAVA6 e Programação por Objetos, F. Mário Martins. Editora FCA, Tecnologias de Informação, Lisboa,
Julho, 2009, 3ª Ed.

Bases de Dados

Objectivos de aprendizagem

1) Distinguir dados, informação e conhecimento.
2) Compreender e aplicar as formas normais e definir conceptualmente o modelo de dados para um
problema específico.
3) Escrever interrogações de bases de dados relacionais usando a álgebra relacional
4) Utilizar a linguagem SQL para administrar, manter e interrogar bases de dados relacionais.
5) Desenvolver aplicações informáticas que operem sobre bases de dados, incluindo aplicações baseadas
na Web.

Conteúdos programáticos

Sistemas de informação e bases de dados
A linguagem estruturada de interrogação SQL
Bases de dados distribuídas.
Bases de Dados Dedutivas ou Lógicas.
Optimização de interrogações e avaliação do desempenho
Sistemas Gestores de Bases de Dados

Metodologias de ensino e avaliação

As aulas teóricas decorrem com a exposição e a discussão dos diversos tópicos considerados no
programa da unidade curricular, com recurso a situações práticas de aplicação real.
As aulas teórico-práticas decorrem com a análise e a resolução de exercícios práticos e a demonstração
de aplicações práticas.
Os alunos para obterem aproveitamento à unidade curricular terão que realizar obrigatoriamente um
exame e um trabalho prático. A avaliação final da unidade curricular é calculada a partir da média das
notas obtidas no exame e no trabalho prático. A nota mínima admissível no exame e no trabalho prático é
de 10 (dez) valores. O trabalho prático deverá ser realizado em grupo. No caso de um aluno em exame
obtiver uma nota inferior a 10, mas superior ou igual a 8, será submetido a uma prova oral de avaliação.

Bibliografia

Connolly, T., Begg, C., Database Systems, A Practical Approach to Design, Implementation, and
Management , Addison-Wesley, 4ª Edição, 2004. ISBN-10: 0321210255. ISBN-13: 978-0321210258.
Garcia-Molina, H., Ullman, J., Widom, J., Database Systems: The Complete Book, Prentice Hall, 2ª Edição,
2008. ISBN-10: 0131873253. ISBN-13: 978-0131873254.
Ramakrishman, R., Database Management Systems, McGraw-Hill Higher Education; 3ª Edição, 2002. ISBN10: 0071230572. ISBN-13: 978-0071230575.
Date, C.J., Darwen, H., A Guide to the SQL Standard , IV Edição, Addison-Wesley Inc, 1997.
Hansen, G., Hansen, J., Database Management and Design, II Edition, Prentice-Hall, Inc, 1996.
Ullman J., Principles of Database and Knowledge-Base Systems , Volume I:Classical Databases Systems,
Computer Science Press, 1988.
Ullman J., Principles of Database and Knowledge-Base Systems, Volume II:The New Technologies,
Computer Science Press, 1989.

Desenvolvimento de Sistemas Software

Objectivos de aprendizagem

Os alunos deverão ser capazes de:
- Reconhecer os diferentes tipos de diagramas da UML ;
- Compreender modelos (de requisitos/estruturais/comportamentais) descritos em UML;
- Conceber sistemas de software utilizando UML;
- Implementar sistemas de software a partir de modelos UML.

Conteúdos programáticos

Introdução aos Sistemas de Software: definição, modelos, processo de desenvolvimento de software.
Modelação Orientada aos Objectos de Sistemas de Informação em UML: Introdução à Unified Modelling
Language (UML); Modelação Estrutural; Modelação Comportamental; Modelação Arquitectural; Estudos de
Casos.

Metodologias de ensino e avaliação

Aulas teóricas para exposição dos conceitos e aulas práticas laboratoriais para consolidação dos
conhecimentos adquiridos, através da realização de mini-projectos. Exame final escrito e trabalho prático
realizado em equipa.

Bibliografia

J. Arlow, I. Neustadt. UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design (2nd
edition). Addison-Wesley Professional, 2005.
D. Pilone, N. Pitman. UML 2.0 in a Nutshell (2nd edition). O'Reilly Media, 2005.
Martin Fowler. UML Distilled (third edition). Addison-Wesley, 2004.

Modelos Determinísticos de Investigação Operacional

Objectivos de aprendizagem

• Desenvolver a capacidade de resolução de problemas (modelos determinísticos), com ênfase em
problemas de engenharia de sistemas.
• Conhecer as técnicas e os métodos de Investigação Operacional apresentados na Unidade Curricular, e
ser capaz de os aplicar na resolução de instâncias de problemas de pequena dimensão.
• Desenvolver a capacidade de analisar sistemas complexos, de criar modelos para os descrever, de obter
soluções para esses modelos utilizando programas computacionais adequados, de validar os modelos
obtidos, de interpretar as soluções obtidas, e de elaborar recomendações para o sistema em análise.
• Compreender a importância da avaliação das soluções, e ser capaz de realizar análises de sensibilidade.

Conteúdos programáticos

Metodologia da Investigação Operacional. Modelos e sua estrutura. Disponibilidade de dados. Óptimo e
Função Objectivo. Resolução e Validação de Modelos.
Programação Linear. Aspectos geométricos. Método Simplex, Método do M, Técnica das Duas Fases.
Programação Linear Avançada. Teoremas da Programação Linear. Análise de Sensibilidade. Preço
Sombra. Teoria da Dualidade. Método Simplex-Dual.
Programação Inteira. Método Partição e Avaliação. Planos de Corte Fraccional e Mistos. Modelos de
Programação Inteira, Custo Fixo, Planeamento da Produção, Dicotomias, Dimensão de Lote.
Modelos de Fluxo em Rede. Análise de Optimabilidade. Método dos Multiplicadores. Transporte com
Limites Superiores.
Gestão de Projectos. Representação de projectos, redes de actividades, diagramas de Gantt, CPM.
Programação Dinâmica. Definições e terminologia. Relação de Recorrência. Condições de Validade
(separabilidade e optimalidade). Contribuições aditivas, multiplicativas e maximin. Carga computacional.

Metodologias de ensino e avaliação

As metodologias de ensino / aprendizagem incluem aulas teóricas, trabalho independente, aulas teóricopráticas e trabalhos em grupo.
Elementos de Avaliação:
Três Trabalhos Práticos de modelação de um problema, e sua resolução com software.
Exame Meio-Semestre
Exame Fim-Semestre
A classificação final é obtida por arredondamento do valor de Cf:
Cf = 0.3 Ce1 + 0.4 Ce2 + 0.1 Ct1 +0.1 Ct2 +0.1 Ct3,
sujeita às seguintes restrições:
Ce1>=40%, Ce2>=40%,
1/3(Ct1 + Ct2 + Ct3)>=50%.
sendo
Ce1 - classificação do exame meio-semestre,
Ce2 - classificação do exame fim-semestre
Cti - classificação do trabalho i, i=1,2,3.
Classificação após Exame de Recurso
A classificação do exame de recurso, Cr, substitui a soma das classificações Ce1+Ce2, quando, pelo
menos, uma delas for inferior a 40%, passando a classificação final a ser obtida por arredondamento do
valor de Cf:
Cf=0.7Cr+0.1Ct1+0.1Ct2 +0.1Ct3,
sujeita às seguintes restrições:
Cr>=40%,
1/3(Ct1+Ct2+Ct3)>=50%

Bibliografia

António Guimarães Rodrigues
Investigação Operacional - Modelos Determinísticos
Universidade do Minho
Jorge Guerreiro, Alípio Magalhães, Manuel Ramalhete
Programação Linear (Volumes I e II)
Mc Graw-Hill Portuguesa
Harvey M. Wagner, Principles of Operations Research
Prentice Hall
Hamdy Taha, Operations Research - An Introduction
Collier MacMillan International Editions
Hastings, Dynamic Programming with Management
Applications
Butterworths

Sistemas Distribuídos

Objectivos de aprendizagem

a) conhecer as características, virtudes, limitações e aplicabilidade do modelo de memória partilhada; b)
conhecer e saber analisar os vários problemas decorrentes da programação com processos concorrentes;
c) conhecer e saber aplicar vários tipos de primitivas de controlo de concorrência em sistemas de
memória partilhada; d) Conhecer as características, virtudes, limitações e aplicabilidade dos modelos e
arquitecturas de sistemas distribuídos; f) saber resolver problemas clássicos de coordenação em sistemas
distribuídos.

Conteúdos programáticos

Introdução a processos, concorrência e sistemas distribuídos;
Concorrência em memória partilhada;
Passagem de mensagens e sistemas distribuídos;
Algoritmos distribuídos.

Metodologias de ensino e avaliação

Aulas teóricas para exposição dos conceitos e aulas práticas laboratoriais para consolidação dos
conhecimentos adquiridos, através da realização de mini-projectos. Exame intermédio e final escritos.

Bibliografia

1. Operating Systems Concepts, 7Ed, Abraham Silberschatz, Peter Galvin an Greg Gagne, 2005.
2. Distributed Systems: Principles and Paradigms, 2Ed Andrew S. Tanenbaum, Maarten Van Steen, 2006.
3. Distributed Systems: Concepts and Design, 5Ed George Coulouris, Jean Dollimore, Tim Kindberg and
Gordon Blair, 2011.

Redes de Computadores

Objectivos de aprendizagem

Como resultado da aprendizagem, espera-se que os alunos devam ser capazes de:
- Discutir os conceitos fundamentais sobre comunicação de dados, protocolos de comunicação, famílias
de protocolos e sua arquitectura, incluindo os elementos protocolares mais comuns;
- Analisar e instanciar esses conceitos, em especial, no nível de ligação de dados;
- Ter uma visão global e crítica sobre as redes locais de computadores e do seu funcionamento;
- Explicar em detalhe as principais funções do protocolo IP;
- Saber implementar soluções concretas do estabelecimento de uma rede local IP, planeando também o
seu esquema de endereçamento e encaminhamento.

Conteúdos programáticos

1. Introdução à comunicação de dados:
- Transmissão assíncrona e síncrona.
- Protocolos de comunicação e funções protocolares.
- Modelo de referência protocolar OSI.
- Modelo TCP/IP.
2. Elementos de protocolos:
- Controlo de uma ligação de dados.
-Topologias e disciplinas não contenciosas.
- Endereçamento e controlo de fluxo.
- Controlo de erros ARQ.
- Análise de desempenho.
3. Protocolos de ligação:
- Modos, estrutura e operação. Exemplos.
- Encapsulamento protocolar e interfaces de serviço.
- Diagrama de transição de estados.
4. Redes Locais:
- Topologias.
- Acesso ao meio por CSMA.
- Normas 802.x: Ethernet e WLAN.
- Equipamento de interligação.
- Comutação e redes virtuais.
5. Protocolo Internet:
- Interligação, serviço e encaminhamento.
- Comutação de datagramas e redes de circuitos virtuais.
- Serviço de entrega por melhor-esforço.
- Endereçamento com e sem classes.
- Subnets e supernets.
- Resolução nomes e ARP.
- Algoritmos encaminhamento.
- Fragmentação, MTU.
- ICMP.
- IPv6.

Metodologias de ensino e avaliação

As aulas teóricas consistem na exposição da matéria fundamental do programa da disciplina. Amiúde
recorre-se a exemplos práticos, resolução de problemas ou analogias sobre exemplos aplicativos do
mundo real, por forma a ilustrar os conceitos teóricos transmitidos. A exposição de matérias é auxiliada
por notas de apoio escritas pelo docente e pela Bibliografia indicada.
A nível laboratorial, as aulas consistem na resolução de fichas práticas guiadas para consolidação da
matéria teórica e na concepção e desenvolvimento de um trabalho de programação ou pequeno ensaio
escrito sobre uma tecnologia ou conceito importante.
A avaliação dos alunos é realizada através de elementos de avaliação teóricos (um teste escrito e um
exame) e através da avaliação dos trabalhos laboratoriais, incluindo o ensaio escrito ou trabalho de
programação.

Bibliografia

- A.S.Tanenbaum, Computer Networks, 4th Ed., Prentice Hall, ISBN: 0130661023, 2003.
- E.Monteiro e F.Boavida, Engenharia de Redes Informáticas, 10ª Edição, ISBN:978-972-722-694-8, FCA,
2011.
- W.Stallings, Data and Computer Communications, 8th Ed., PrenticeHall, ISBN: 0-13-2433109,2007.
W. Richards, TCP/IP Illustrated Volume 1: The Protocols,Addison Wesley, ISBN: 0201633469, 1995.

Métodos Numéricos e Otimização Não Linear

Objectivos de aprendizagem

Compreender e utilizar métodos de resolução de equações e sistemas não lineares;
Resolver sistemas de equações lineares por métodos diretos com pivotagem parcial;
Compreender e aplicar estratégias de aproximação de funções;
Descrever e aplicar métodos de integração numérica;
Compreender, escolher e utilizar o método de otimização mais adequado a um problema específico;
Utilizar os métodos numéricos em problemas de Engenharia Informática;
Utilizar software específico (MATLAB) na resolução de problemas.

Conteúdos programáticos

Erros em cálculo numérico. Métodos directos para sistemas de equações lineares. Métodos iterativos para
equações não lineares. Aproximação de funções por polinómios interpoladores e por "Splines" cúbicas.
Integração numérica. Aproximação dos mínimos quadrados (linear). Métodos de otimização para
problemas não lineares sem restrições, com e sem derivadas.
Prática laboratorial: MATLAB

Metodologias de ensino e avaliação

Aulas teóricas de apresentação de conteúdos e resolução de alguns exemplos.
Aulas de exercícios/tutoriais de implementação de algoritmos, utilização de software numérico (MATLAB).
Avaliação contínua: 2 testes (2h cada, 15 valores) para avaliar a componente teória e teórico-prática; 1
teste laboratorial em grupos de 2 alunos (componente prática - 5 valores)
Exame final (3h): 15 valores (se o aluno tem componente prática) ou 20 valores caso contrário.

Bibliografia

Slides de Métodos Numéricos, M. Teresa T. Monteiro
Métodos Numéricos: Exercícios resolvidos aplicados à Engenharia e outras Ciências, M. Teresa T.
Monteiro, ISBN 978-989-97050-0-5
Heitor Pina, Métodos Numéricos
S.C. Chapra e R.P. Canale, Numerical Methods for Engineers with Programming and Software Applications,
McGraw-Hill, 1998.
J.R. Rice, Numerical Methods, Software and Analysis, McGraw-Hill, 1983.

Sistemas de Representação de Conhecimento e Raciocínio

Objectivos de aprendizagem

As matérias que são objecto de tratamento na unidade curricular emanam da área de conhecimento que,
em larga medida, se situa na intersecção das áreas científicas da Inteligência Artificial, das Bases de
Dados e da Lógica Computacional.
(i) É objectivo desta unidade curricular a introdução dos discentes aos paradigmas da representação do
conhecimento e de raciocínio lógico, e sua aplicação na concepção e implementação de sistemas
inteligentes ou de apoio à decisão, em que a qualidade da informação e o grau de confiança que é
depositado na conjugação dos atributos de um predicado ou função lógica é fulcral.
(ii) Compreender a relação entre a complexidade de um modelo representação de conhecimento e as
formas de raciocínio a ele associadas e o seu desempenho, utilizando esta informação na definição de
uma estratégia para a sua otimização.

Conteúdos programáticos

1. LÓGICA COMPUTACIONAL
2. EXTENSÃO À PROGRAMAÇÃO EM LÓGICA
3. REPRESENTAÇÃO DO CONHECIMENTO E FORMAS DE RACIOCÍNIO
4. REPRESENTAÇÃO DE CONHECIMENTO IMPERFEITO
5. INFERÊNCIA ESTATÍSTICA
6. SISTEMAS HIERÁRQUICOS
7. RECONHECIMENTO DE PADRÕES
8. ESTUDOS DE COMPLEXIDADE

Metodologias de ensino e avaliação

A metodologia de ensino intervala no tempo exposições teóricas, realização de tutoriais sobre os
conceitos apresentados e acompanhamento contínuo do trabalho prático.
O sistema de avaliação está genericamente organizado em torno de três instrumentos de avaliação: uma
prova escrita, trabalho prático individual e trabalho em grupo, caso em que se procura que os discentes se
socializem, e isto com base numa troca de conhecimento e experiências pessoais.

Bibliografia

- Christopher J. Hogger, "Essentials of Logic Programming", Clarendon Press, Oxford, 1990;
- Ivan Bratko, "PROLOG: Programming for Artificial Intelligence", 3rd Edition, Addison-Wesley Longman
Publishing Co., Inc., 2000;
- Stuart Russel, Peter Norvig, "Artificial Intelligence - A Modern Approach", 2nd Edition, Prentice-Hall
International, Inc., 2003.

Modelos Estocásticos de Investigação Operacional

Objectivos de aprendizagem

a) Conhecer as técnicas e os métodos de Investigação Operacional apresentados na UC, e ser capaz de os
aplicar na resolução de instâncias de problemas de pequena dimensão.
b) Desenvolver a capacidade de resolução de problemas (modelos estocásticos), com ênfase em
problemas de engenharia de sistemas.
c) Desenvolver a capacidade de analisar sistemas complexos, de criar modelos para os descrever, de
obter soluções para esses modelos utilizando programas computacionais adequados, de validar os
modelos obtidos, de interpretar as soluções obtidas, e de elaborar recomendações para o sistema em
análise.
d) Compreender a importância da avaliação das soluções, e ser capaz de realizar análises de sensibilidade.

Conteúdos programáticos

1. Programação Dinâmica Estocástica
1.1. Introdução aos Processos Estocásticos. Processos Markovianos. Processos Ergódicos.
1.2. Programação Dinâmica. Processos de decisão Markovianos: (a) com um número finito de estágios, e
(b) com um número indeterminado de estágios.
2. Teoria de Filas de Espera
Filas M/M/S, M/M/S(K), M/M/S(N), Ek/El/1. Problemas de decisão. Métodos exatos. Simulação de filas de
espera.
3. Gestão de Inventários
3.1. Modelo determinístico da Quantidade Económica de Encomenda (QEE).
3.2. Modelos probabilísticos ou estocásticos: políticas de Nível de Encomenda e de Ciclo de Encomenda
para procuras estacionárias e estáveis. Modelo estático de decisão, "Newsboy Problem", para situações
de encomenda única.

Metodologias de ensino e avaliação

As metodologias de ensino/aprendizagem incluem aulas teóricas, trabalho independente, aulas teóricopráticas e trabalhos em grupo.
Cada aluno será valiado pela sua prestação em três elementos de avaliação:
- 2 testes individuais sem consulta [2*25% da UC; nota min=40% em 100%, em cada teste];
- diversas (4 a 6) fichas individuais a realizar ao longo do semestre [10% da UC];
- 2 trabalhos práticos em grupo (max. 3 alunos) [2*20% da UC; min=40% em 100%, em cada].

Bibliografia

- A. Guimarães Rodrigues, "Investigação Operacional", Vol II, Univ. Minho, 1994.
- L.Valadares Tavares, R. Oliveira, I. Themido, F. Correia, "Investigação Operacional", McGraw Hill, 1996.
- Frederick S. Hillier and Gerald J. Lieberman," Introduction to Operations Research", McGraw-Hill, 2009.
- Hamdy A. Taha, "Operations Research: An Introduction", Prentice Hall, 2010.

Computação Gráfica

Objectivos de aprendizagem

Os formandos devem desenvolver as seguintes competências com a frequência deste módulo:
• Caracterizar as transformações geométricas e os referencias utilizados na computação gráfica;
• Aplicar transformações para construção de modelos geométricos complexos e posicionamento da
câmara;
• Algoritmos de iluminação local e global: Gouraud, Phong, Ray-tracing, Radiosity and Virtual Point Lights;
• Aplicar texturas e definir coordenadas de textura;
• Analisar soluções do ponto de vista do desempenho recorrento a profilers.
• Utilizar apropriadamente soluções de eliminação de geometria, recorrendo a partição espacial.
• Aplicar a Analisar algoritmos para geração de sombras

Conteúdos programáticos

• Geometrical transformations and referentials;
• Construção de cenários 3D complexos através de primitivas simples e transformações geométricas;
• Algoritmos de iluminação local e global: Gouraud, Phong, Ray-tracing, radiosity, e Virtual Point Lights.
• Texturas: aplicação e definição de coordenadas de textura.
• Análise de desempenho com ferramentas de profiling.
• Partição espacial e culling.
• Algoritmos para geração de sombras: shadow maps e shadow volumes.

Metodologias de ensino e avaliação

Sessões de exposição teórica para cobrir os aspectos relacionados com os fundamentos da área,
complementadas com tutoriais práticos de desenvolvimento e avaliação de pequenas aplicações gráficas.
Sessões de discussão sobre possíveis implementações e suas variações para os algoritmos acima
mencionados.
Métodos de Avaliação:
50% trabalho prático; 50% exame escrito

Bibliografia

"OpenGL Programming Guide", last edition, Addison Wesley.
"Interactive Computer Graphics", Edward Angel, Addison Wesley. Mathematics for 3D Game Programming
and Computer Graphics;Eric Lengyel;Delmar Cengage Learning Publishing; 3rd edition; 2011

Comunicações por Computador

Objectivos de aprendizagem

- Descrever e aplicar os diferentes algoritmos de cálculo de rotas (LS e DV)
- Discutir diferentes protocolos de encaminhamento unicast
- Planear e implementar solução de interligação intra e inter domínios
- Distinguir os diferentes serviços de transporte
- Configurar soluções de segurança para os níveis de rede e de transporte
- Identificar, classificar e configurar serviços básicos de rede e soluções de gestão de redes
- Descrever o funcionamento das principais aplicações
- Classificar as diferentes aplicações em função dos seus requisitos de QoS

Conteúdos programáticos

- Conceitos, algoritmos e protocolos de encaminhamento
* Encaminhamento dinâmico: Vector Distância (DV) e Estado das Ligações (LS)
* Protocolos de encaminhamento
- Protocolos da Camada de Transporte
* UDP e TCP
* Mecanismos TCP: controlo de fluxo, controlo de congestão, controlo de erros;
* Programação usando sockets TCP e UDP
- Protocolos da Camada de Aplicação
* SMTP e MIME, POP e IMAP
* FTP e HTTP: Mensagens, Diagramas de sequência
* Directorias e Serviços de Resolução de Nomes (DNS, X.500, LDAP)
- Segurança ao nível da rede e de transporte
- Aplicações Multimédia
Streaming de Audio e Video na Internet

Metodologias de ensino e avaliação

Metodologia de Ensino:
- Exposição teórica com resolução de exercícios teórico-práticos;
- Realização de trabalhos práticos (de grupo) em aulas laboratoriais;
Avaliação:
- Por avaliação contínua, com 2 elementos de avaliação:
* 1 teste escrito sumativo (em Junho);
* Trabalhos Teorico-Práticos (componente experimental de execução obrigatória)
Nota Final = 60% Teste Sumativo + 40% Trabalhos
-- A nota do Teste Sumativo não pode ser inferior a 8,0 valores
-- A nota da componente prática laboratorial não pode ser inferior a 10,0 valores
- Por Exame de Recurso (em Julho)
Devem realizar o exame de recurso os alunos com nota negativa (inferior a 8,0 valores) no teste sumativo
Só podem realizar o exame de recurso os alunos que tenham realizado a componente prática obrigatória
com nota não inferior a 10,0 valores
Nota Final = 60% Exame Recurso + 40% Trabalhos Práticos
-- A Nota Exame Recurso não pode ser inferior a 8,0 valores

Bibliografia

* J. Kurose et al, Computer Networking . A Top Down Approach Featuring the Internet, Addisson-Wesley, 6ª
edição, 2012;
* W.Stallings, Data and Computer Communications, 9 Edição, Prentice Hall, 2011.
* A.S.Tanenbaum, Computer Networks, 5ª Edição, Prentice Hall, 2011
* Radia Perlman, Interconnections Second Edition, Bridges, Routers, Switches and Internetworking
Protocols, Addisson-Wesley, 2002

Processamento de Linguagens

Objectivos de aprendizagem

Competências Genéricas:
a capacidade de comunicação escrita e oral na apresentação e discussão dos processos usados e
resultados obtidos;
a capacidade de utilização de ferramentas genéricas de informática em ambiente Linux e de elaboração de
documentos.
Competências específicas de Processamento de Linguagens:
a capacidade de especificar linguagens de domínio específico através de gramáticas e/ou expressões
regulares;
a capacidade de desenvolver processadores para essas linguagens;
a capacidade de transformar qualquer formato textual num outro formato;
a capacidade de especificar e implementar “front-ends” e “back-ends” para qualquer tipo de aplicação.

Conteúdos programáticos

Introdução ao Processamento de Linguagens: a noção de Linguagem e de Gramática, Interpretador versus
Compilador; Arquitectura de um processador de linguagens: análise léxica, análise sintáctica e análise
semântica;
Linguagens Regulares e Análise Léxica; Especificação de linguagens regulares com expressões regulares;
Reconhecimento de linguagens especificadas com expressões regulares: o conceito de autómato;
Conversão de Expressões Regulares em Autómatos Finitos Determinísticos; A ferramenta flex como
gerador de autómatos.
Análise Sintáctica: Linguagens e Gramáticas Independentes de Contexto; Estrutura e funcionamento de
um parser; Parsing Top-Down: o Recursivo-descendente e LL(1); Parsing Bottom-UP: LR(0), LR(1) e SLR
(1); Utilização da ferramenta yacc como gerador de parsers Bottom-UP.
Análise Semântica e Transformação especificada via Gramáticas Tradutoras (GT) ---Tradução Dirigida pela
Sintaxe.

Metodologias de ensino e avaliação

Nesta unidade curricular segue-se um ensino construtivista e orientado ao estudo de caso, que mais
formalmente se pode descrever à custa das vertentes:
Ensino Individualizado: Estudo orientado e Ensino por módulos;
Ensino Socializado: Discussão em pequenos grupos; Brainstorming; Palestras;
Ensino Sócio-Individualizado: Projecto.
A avaliação da aprendizagem envolve: um trabalho de desenvolvimento experimental e escrito, a realizar
em grupo, consubstanciando uma componente de carácter individual.
Tanto a componente individual como a componente de grupo têm limite de execução temporal bem
definido, nunca excedendo o período lectivo. A classificação final é dada na forma:
• 40% da classificação provém da componente prática de grupo;
• 60% da classificação provém da componente individual.
É considerado aprovado o aluno cuja nota final seja superior ou igual a 10 (dez) valores, sendo obrigatório
ter classificação positiva em todos os instrumentos de avaliação.

Bibliografia

Aho , Sethi , Ullman , Compiler Principles, Techniques and Tools , Addison-Wesley , 1986;
R. G. Crespo , Processadores de Linguagens: da concepção à implementação, IST-Press , 1998;
Pittman , Peters , The Art of Compiler Design: theory and practice , Prentice-Hall , 1992.

Laboratórios de Informática IV

Objectivos de aprendizagem

- Fundamentar, projetar e gerir o desenvolvimento de um sistema de software.
- Analisar e especificar de forma completa todos os requisitos operacionais e funcionais de um sistema de
software.
- Desenvolver, testar, documentar e instalar sistemas de software.

Conteúdos programáticos

- A Engenharia de Software
- A Evolução do Software
- Metodologias e Processos de Software
- Gestão de Projetos de Software
- Engenharia de Requisitos
- Modelação de Sistemas
- Arquiteturas de Software e de Aplicações
- Desenvolvimento Rápido de Software
- Verificação, Validação e Testes de Software
- Ambientes e Ferramentas de Desenvolvimento de Software.
- Fábricas de Software

Metodologias de ensino e avaliação

As aulas de seminário e workshops temáticas são uma forma de exposição e discussão dos diversos
tópicos considerados no programa da disciplina, com recurso frequente a situações práticas de aplicação
real.
Os alunos para obterem aproveitamento à disciplina têm que realizar um trabalho prático. A nota final da
disciplina é a nota obtida nesse trabalho prático. O trabalho prático deverá ser realizado em grupo.

Bibliografia

.-Ian Sommerville. Software Engineering, 8th Edition, Pearson Education (Addison Wesley), 2006.
- Lars Powers, Mike Snell, Microsoft Visual Studio 2008 Unleashed, Sams, 1 edition, 2008.
Nick Randolph, David Gardner, Professional Visual Studio 2008, Wrox, 2008.
- Jay Hilyard, Stephen Teilhet, C# Cookbook, 2nd Edition (Cookbooks (O'Reilly)), O'Reilly Media, Inc., 2nd
edition, 2006.
- Dusan Petkovic, Microsoft SQL SERVER 2008 ? A Beginners?s Guide 4/E, McGraw-Hill Osborne Media; 4
edition (July 9, 2008).
- Simon Robinson, Christian Nagel, Karli Watson, Jay Glynn, Professional C# (Programmer to
Programmer), Wrox, 3 Sub edition, 2004.
- Ivor Horton, Ivor Horton's Beginning Visual C++ 2008, Wrox, 2008. ISBN-10: 0470225904. ISBN-13: 9780470225905.

Opção I1

Objectivos de aprendizagem

No primeiro semestre do primeiro ano o aluno deverá ainda realizar uma UC designada por “Opção1” .
Esta UC, de 5 ECTS, escolhida de entre a oferta formativa oferecidas por outros Perfis de Especialização
que não os que elegeu para a sua área de especialização.
É objetivo desta UC desenvolver competências noutra área de especilização.

Conteúdos programáticos

Dada a natureza desta UC, o programa irá variar em função da UC e do perfil.

Metodologias de ensino e avaliação

Esta é uma UC voltada para a aquisição de conhecimentos numa específica área de especialização e dada
a natureza desta UC, irá variar em função da UC e perfil.

Bibliografia

Depende dos tópicos selecionados.
Depends on the selected topic.

Opção I2

Objectivos de aprendizagem

No primeiro semestre do primeiro ano o aluno deverá ainda realizar uma UC designada por “Opção2” .
Esta UC, de 5 ECTS, escolhida de entre a oferta formativa oferecidas por outros Perfis de Especialização
que não os que elegeu para a sua área de especialização.
É objetivo desta UC desenvolver competências noutra área de especilização.

Conteúdos programáticos

Dada a natureza desta UC, o programa irá variar em função da UC e do perfil.

Metodologias de ensino e avaliação

Esta é uma UC voltada para a aquisição de conhecimentos numa específica área de especialização e dada
a natureza desta UC, irá variar em função da UC e perfil.

Bibliografia

Depende dos tópicos selecionados.
Depends on the selected topic.

Laboratório de Engenharia Informática

Objectivos de aprendizagem

Aprendizagem prática de conceitos de desenvolvimento de projeto, associado a um perfil de
especialização.

Conteúdos programáticos

Dada a natureza desta UC, o programa irá variar em função do perfil selecionado.

Metodologias de ensino e avaliação

Esta é uma UC voltada para a aquisição de conhecimentos numa específica área de especialização e dada
a natureza desta UC, irá variar em função do perfil selecionado.

Bibliografia

Depende dos tópicos selecionados.
Depends on the selected topic.

Projeto de Engenharia Informática

Objectivos de aprendizagem

• Interagir com o cliente; comunicar requisitos e decisões de conceção com os usuários
• Planear e acompanhar um projeto de desenvolvimento de software; Rever o plano durante a execução do
projeto; Refletir sobre as expectativas iniciais e estimativas
• Trabalhar em equipe; Coordenar uma equipe e as suas reuniões; Usar ferramentas de colaboração
básicas no desenvolvimento de software
• Realizar um projeto de desenvolvimento de software do começo ao fim; Identificar os requisitos; criar a
arquitetura que suporta os requisitos; implementar o projeto; testar e validar a implementação
• Apresentar o projeto, produto, planos e documentos para os colegas, as partes interessadas e o público
em geral; Produzir documentação que é compreensível e utilizável
• Criar um novo produto, comparar o produto com a concorrência; Produzir um plano de negócios para o
produto

Conteúdos programáticos

Desenvolvimento em equipa dum projeto de software e do respetivo plano de negócio

Metodologias de ensino e avaliação

Os alunos são avaliados em função da qualidade do produto de software desenvolvido, da forma como o
projeto foi conduzido e gerido, do nível de sofisticação do plano de negócio. Adicionalmente, são
avaliados vários entregáveis (visão do produto, requisitos, plano do projeto, documento de design,
documentação técnica, código, documentação de utilização, plano de negócio, material de marketing)
relacionados com o projeto. Um mecanismo de avaliação entre pares permite diferenciar as notas de cada
aluno, em função de um conjunto de critérios estabelecidos pelos próprios alunos e das avaliações que se
fazem entre eles.

Bibliografia

JM Fernandes, N van Hattum-Janssen, AN Ribeiro, V Fonte, LP Santos, e P Sousa; An integrated approach
to develop professional and technical skills for informatics engineering students, European Journal on
Engineering Education, Taylor & Francis, vol. 37, n. 2, pp. 167-177, mai/2012

Dissertação em Engenharia Informática

Objectivos de aprendizagem

A preparação da dissertação implica necessariamente o envolvimento do estudante num projecto de
investigação e desenvolvimento de média/grande dimensão. Este projeto insere-se regra geral num projeto
maior, associado a um centro de investigação e/ou a uma empresa. O envolvimento do estudante neste
tipo de projetos permitir-lhe-á:
. consolidar e aprofundar os conhecimentos adquiridos ao longo do seu percurso no Ensino Superior;
. ser capaz de identificar e delimitar o problema a tratar, bem como de propor uma metodologia para
abordar esse problema;
. desenvolver competências para realizar trabalho de investigação individual em Engenharia Informática;
. desenvolver autonomia, responsabilidade e capacidade de trabalho em equipa
O estudante deve no final escrever, apresentar e defender publicamente uma prova escrita, promovendo a
capacidade de síntese e comunicação oral e escrita.

Conteúdos programáticos

Dada a natureza desta UC, esta não dispõe de um programa específico.

Metodologias de ensino e avaliação

Esta é uma UC voltada para a aplicação dos conhecimentos adquiridos ao longo do curso num tema
específico. Esta pode ter um cariz de investigação, ou de projeto profissional em ambiente industrial. Ao
aluno é proposto um tema de trabalho e um orientador. O aluno deverá desenvolver o plano de trabalho
forma autónoma, de acordo com as instruções do(s) orientador(es). Deverá implementar as soluções
preconizadas no plano desenvolvido.

Bibliografia

A bibliografia é fornecida pelo orientador e a que resultar da pesquisa bibliográfica do aluno.
Depends on the selected dissertation topic.

Unidades Curriculares - Programas dos Perfis

Bioinformática

Algoritmos para Análise de Sequências Biológicas

Objetivos de aprendizagem:

O objetivo desta unidade curricular é o de dotar os alunos das capacidades de perceber, utilizar e desenvolver algoritmos de processamento e análise de sequências biológicas, utilizando uma linguagem de programação para a sua implementação.
Os alunos que frequentem a UC deverão ser capazes de:
- Identificar e relacionar os principais problemas relacionados com a manipulação de sequências biológicas e sua relevância
- Desenvolver algoritmos de processamento e análise de sequências para abordar problemas biologicamente relevantes
- Implementar algoritmos de processamento e análise de sequências biológicas usando uma linguagem de programação
- Conhecer e utilizar bibliotecas de software livre disponível para a análise e processamento de sequências biológicas

Conteúdos programáticos:

- Algoritmos básicos de processamento de sequências biológicas
- Procura de padrões em sequências
- Alinhamentos de sequências (simples e múltiplos)
- Procura de sequências similares em bases de dados
- Algoritmos para análise filogenética
- Descoberta de motifs a partir de conjuntos de sequências
- Algoritmos para a descoberta de genes 

Metodologias de ensino:

Aulas teóricas: 
- apresentação e explanação de conceitos, problemas, algoritmos
- apresentação de exemplos ilustrativos
- resolução de exercícios
Aulas práticas (com uso de computador)
- resolução de exercícios de programação 
- exploração de bibliotecas existentes de software livre

Bibliografia:

N. C. Jones, P. Pevzner, An Introduction to Bioinformatics Algorithms, MIT Press, 2004 
H.J. Bockenhauer, D. Bongartz , Algorithmic Aspects of Bioinformatics, Springer, 2007.
S. Bassi, Python for Bioinformatics. Chpaman & Hall. 2010

Laboratórios de Bioinformática

Objetivos de aprendizagem:

- Dotar os alunos dos conhecimentos biológicos básicos para compreensão dos problemas e ferramentas da Bioinformática
- Promover o conhecimento das principais bases de dados e ferramentas disponíveis na área da Bioinformática
- Promover o desenvolvimento de competências ao nível da utilização avançada de repositórios de software livre na área da Bioinformática para construção de pequenos programas para tarafas específicas

Os alunos que frequentem a UC deverão ser capazes de:
- Identificar e pesquisar informação nas principais bases de dados com informação relevante na área da Bioinformática
- Identificar, utilizar e avaliar criticamente as principais ferramentas disponíveis ao nível da Bioinformática
- Conhecer e saber utilizar repositórios de software livre em Bioinformática, para a construção de pequenos programas para tarefas específicas com sequências e outros dados biológicos

Conteúdos programáticos

Conceitos básicos de Biologia Molecular
Bases de dados biológicas e sua exploração
Principais ferramentas na área da Bioinformática
Repositórios de software livre em Bioinformática e sua exploração

Metodologias de ensino:

Aulas teóricas: 
- apresentação e explanação de conceitos
- apresentação de exemplos ilustrativos
Aulas práticas (com computador)
- exploração de bases de dados e ferramentas computacionais
- exploração de repositórios de software livre em Bioinformática

Bibliografia:

- D. Mount, Bioinformatics: Sequence and genome analysis, Cold Spring Harbor Laboratory Press, 2nd edition, 2005
- A. Baxevanis, F. Ouellete (Eds) Bioinformatics: A Practical Guide to the Analysis of genes and proteins, Wiley, 2004
- A. Tozeren, S. W. Byers. New Biology for Engineers and computer Scientists. Prentice Hall, 2004 

Algoritmos Avançados de Bioinformática

Objetivos de aprendizagem:

Promover a aquisição de competências avançadas ao nível da compreensão e implementação dos principais algoritmos na área da Bioinformática, incluindo métodos de optimização e sua utilização para resolução de problemas biológicos

Os alunos que frequentem a UC deverão ser capazes de:
- Identificar e descrever conceitos e problemas avançados na área da Bioinformática
- Escolher classes de algoritmos apropriadas para a resolução de problemas complexos de Bioinformática, incluindo métodos de otimização
- Conhecer as principais alternativas ao nível de algoritmos baseados em grafos e metaheurísticas de otimização e suas aplicações em problemas avançados de Bioinformática
- Implementar algoritmos avançados de Bioinformática, incluindo algoritmos baseados em grafos e metaheurísticas, numa linguagem de programação apropriada

Conteúdos programáticos:

- Grafos e algoritmos sobre grafos 
- Redes biológicas e sua análise 
- Algoritmos para procura eficiente de padrões em sequências 
- Algoritmos para alinhamento de sequências contra referências
- Algoritmos para assemblagem de genomas
- Métodos metaheurísticos de otimização estocásticos e sua aplicação em Bioinformática
- Implementação de algoritmos avançados de Bioinformática

Metodologias de ensino:

Aulas teóricas: apresentação de problemas e algoritmos, ilustração com exemplos
Aulas práticas com computador: exploração de ferramentas; programação de algoritmos

Bibliografia:

- P. Compeau, P. Pevzner. Bioinformatics Algorithms: An active learning approach, vols. 1 e 2, 2015
- N. C. Jones, P. Pevzner, An Introduction to Bioinformatics Algorithms, MIT Press, 2004

Extração de Conhecimento de Bases de Dados Biológicas

Objetivos de aprendizagem:

Promover a aquisição de conhecimentos e competências básicas sobre os processos e ferramentas de análise de dados multivariada, mineração de dados  e aprendizagem máquina e suas aplicações na Bioinformática

Os alunos que frequentem a UC deverão ser capazes de:
- Identificar, descrever e definir os principais conceitos relacionados com os processos de análise multivariada de dados, aprendizagem máquina e mineração de dados
- Seleccionar as metodologias apropriadas e aplicar software disponível na resolução de problemas ao nível da análise multivariada e mineração de dados
- Conhecer e ser capaz de implementar os principais algoritmos relacionados com técnicas de  Aprendizagem Máquina
- Aplicar as metodologias de análise e mineração de dados no caso específico das bases de dados biológicas

Conteúdos programáticos:

- Métodos para análise multivariada de dados
- Métodos para pré-processamento de dados
- Mineração de Dados e Aprendizagem Máquina: conceitos
- Modelos e algoritmos de classificação e regressão; árvores e regras ; redes neuronais; modelos funcionais; aprendizagem baseada em instâncias, modelos bayesianos
- Avaliação e comparação de modelos e algoritmos
-  Aplicações na análise e mineração de dados biológicos
- Ferramentas  computacionais para análise e mineração de dados

Metodologias de ensino:

Aulas teóricas: apresentação de conceitos e algoritmos; exemplos ilustrativos
Aulas práticas: exploração de ferramentas; programação de algoritmos

Bibliografia:

- Análise Inteligente de Dados – Algoritmos e Implementação em Java; M. Rocha, P. Cortez, J. Neves; FCA; 2008
- I. Witten, E. Frank, Data Mining: Practical Machine Learning Tools and Techniques, 2nd edition, Morgan Kaufman, 2005.
- T. Mitchell, Machine Learning, McGraw Hill, 1997.
- J. Maindonald, j. Braun. Data Analysis and Graphics Using R – An example based approach, 2nd ed, Cambridge Press, 2006

Business Intelligence

Sistemas Operacionais

Objectivos de aprendizagem

A realização com sucesso desta unidade curricular possibilitará aos alunos:
OA1> Entenderem a missão e os objectivos de um sistema de bases de dados dentro de uma organização e
caracterizarem de forma clara o processo da sua implementação e justificar os investimentos necessários.
OA2> Projectarem um sistema de bases de dados desde o seu esboço (modelação conceptual) até à sua
efectiva implementação e exploração.
OA3> Aplicarem de forma concreta técnicas de análise de requisitos e de modelação no desenvolvimento de
esquemas de dados para bases de dados.
OA4> Adquirirem o conhecimento essencial para saberem administrar e aplicar modelos de segurança,
recuperação e privacidade de dados em sistemas de gestão de bases de dados.
OA5> Conhecerem e utilizarem a linguagem SQL nas suas vertentes de descrição, manipulação e controlo de
dados.
OA6> Conhecerem as novas abordagens NoSQL e saberem diferenciá-las em termos de aplicações com as
abordagens relacionais.

Conteúdos programáticos

CP1. Introdução aos Sistemas de Bases de Dados.
CP2. O Modelo Relacional de Dados.
CP3. Análise de Modelos para Projetos de Sistemas de Bases de Dados.
CP4. A Linguagem SQL.
CP5. Administração de Bases de Dados.
CP6. Bases de Dados Distribuídas.
CP7. Bases de Dados NoSQL.

Metodologias de ensino e avaliação

As 56h lectivas são divididas em 24h teóricas (T) e 32h teórico-práticas. As aulas T são de natureza expositiva.
A aulas TP permitem consolidar os conceitos leccionados nas aulas T, através da resolução de exercícios de
modelação dimensional e acompanhamento a cada grupo ao trabalho prático, bem como o ensino das
ferramentas de desenvolvimento essenciais para o trabalho prático.
Os alunos para obterem aproveitamento nesta unidade curricular terão que realizar obrigatoriamente uma
prova escrita e um trabalho prático. A avaliação final da disciplina é calculada a partir da média das notas
obtidas na prova escrita e no trabalho prático. A nota mínima na prova escrita e no trabalho prático é de 10
valores. Se na prova escrita o aluno tiver nota inferior a 10, mas superior ou igual a 8, será submetido a uma
prova oral de avaliação. O trabalho prático será realizado em grupo.

Bibliografia

Connolly, T., Begg, C., Database Systems, A Practical Approach to Design, Implementation, and Management ,
Addison-Wesley, 4ª Edição, 2004.
Garcia-Molina, H., Ullman, J., Widom, J., Database Systems: The Complete Book, Prentice Hall, 2ª Edição, 2008.
Date C., An Introduction to Database Systems , Pearson Education; 8ª Edição, 2003.
Sadalage , P., Fowler, M., NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence,
Addison-Wesley Professional, 2012.

Data Warehousing

Objectivos de aprendizagem

A realização com sucesso desta unidade curricular possibilitará aos alunos:
OA1. Entenderem a missão e os objectivos de um sistema de data warehousing dentro de uma organização e
caracterizarem de forma clara o processo de como os implementar e justificar os investimentos necessários à
sua implementação.
OA2. Projectarem um sistema de data warehousing desde o seu esboço (modelo conceptual), até à sua
efectiva implementação e exploração.
OA3. Aplicarem de forma concreta técnicas de modelação dimensional no desenvolvimento de esquemas para
data warehouses.
OA4. Projetarem de raiz um sistema de povoamento para um data warehouse, bem como todos os seus
componentes de extração, transformação e carregamento de dados.
OA5. Saberem integrar num ambiente de um sistema de data warehousing serviços de processamento
analítico e correspondentes componentes de exploração de dados.

Conteúdos programáticos

CP1. Introdução aos Sistemas de Data Warehousing.
CP2. Infra-estruturas e Serviços de um Sistema de Data Warehousing.
CP3. Ciclo de Vida do Desenvolvimento de um Sistema de Data Warehousing.
CP4. Metodologias para o Desenvolvimento de Sistemas de Data Warehousing.
CP5. Planeamento e Gestão de um Projecto de Data Warehousing.
CP6. Levantamento e Análise de Requisitos de Agentes de Decisão.
CP7. Modelação Conceptual, Lógica e Física de Data Warehouses.
CP8. Projecto de Sistemas de ETL.
CP9. Administração de Sistemas de Data Warehousing.
CP10. Exploração de Sistemas de Data Warehousing.

Metodologias de ensino e avaliação

As 62h lectivas são divididas em 31h teóricas (T) e 31h teórico-práticas. As aulas T são de natureza expositiva.
A aulas TP permitem consolidar os conceitos leccionados nas aulas T, através da resolução de exercícios de
modelação dimensional e acompanhamento a cada grupo ao trabalho prático, bem como o ensino das
ferramentas de desenvolvimento de data warehouses essenciais para o trabalho prático.
Os alunos para obterem aproveitamento nesta unidade curricular terão que realizar obrigatoriamente uma
prova escrita e um trabalho prático. A avaliação final da disciplina é calculada a partir da média das notas
obtidas na prova escrita e no trabalho prático. A nota mínima na prova escrita e no trabalho prático é de 10
valores. Se na prova escrita o aluno tiver nota inferior a 10, mas superior ou igual a 8, será submetido a uma
prova oral de avaliação. O trabalho prático será realizado em grupo

Bibliografia

Golfarelli, M., Rizzi, S., Data Warehouse Design: Modern Principles and Methodologies, McGraw-Hill Osborne
Media; 1st Edition, May 26, 2009.
Kimball, R., Reeves, L., Ross, M., Thornthwait, W., The Data Warehouse Lifecycle Toolkit – Pratical Techiniques
for Building Data Warehouse and Business Intelligence Systems, John Wiley & Sons, 2ª Edição, 2008
Kimball, R., Caserta, J., The Data Warehouse ETL Toolkit - Practical Techniques for Extracting, Cleaning,
Conforming, and Delivering Data, John Wiley & Sons, 2004.
Kimball, R., Roos, M., The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling, John Wiley
& Sons, 2ª Edição, 2002.
Larissa Moss, Shaku Atre. Business Intelligence Roadmap. The Complete Lifecycle for Decision-Support
Applications. Addison-Wesley Information Technology Series. 2003.
Inmon, W.H., Building the Data Warehouse , John Wiley & Sons,1996

Processamento Analítico de Dados

Objectivos de aprendizagem

A realização com sucesso desta unidade curricular possibilitará aos alunos:
OA1> Entenderem a missão e os objectivos de um sistema de processamento analítico dentro de uma
organização e caracterizarem de forma clara o processo da sua implementação e justificar os investimentos
necessários.
OA2> Projectarem um um sistema de processamento analítico desde o seu esboço (modelação conceptual)
até à sua efectiva implementação e exploração.
OA3> Adquirirem o conhecimento essencial para saberem administrar e aplicar modelos de segurança,
recuperação e privacidade de dados em sistemas de gestão de bases de dados multidimensionais.
OA4> Conhecerem e utilizarem a linguagem MDX na manipulação de uma base de dados multidimensional.

Conteúdos programáticos

CP1. O Processamento Analítico de Dados.
CP2. Bases de Dados Multidimensionais.
CP3. Estruturas Multidimensionais de Dados – os (Hiper) Cubos.
CP4. Processamento, Armazenamento e Exploração de Cubos.
CP5. Linguagens de Interrogação Multidimensional.
CP6. Optimização de Estruturas Multidimensionais.
CP7. Ferramentas e Aplicações OLAP.

Metodologias de ensino e avaliação

As 45h lectivas são divididas em 20h teóricas (T) e 25h teórico-práticas. As aulas T são de natureza expositiva.
A aulas TP permitem consolidar os conceitos leccionados nas aulas T, através da resolução de exercícios de
modelação dimensional e acompanhamento a cada grupo ao trabalho prático, bem como o ensino das
ferramentas de desenvolvimento essenciais para o trabalho prático.
Os alunos para obterem aproveitamento nesta unidade curricular terão que realizar obrigatoriamente uma
prova escrita e um trabalho prático. A avaliação final da disciplina é calculada a partir da média das notas
obtidas na prova escrita e no trabalho prático. A nota mínima na prova escrita e no trabalho prático é de 10
valores. Se na prova escrita o aluno tiver nota inferior a 10, mas superior ou igual a 8, será submetido a uma
prova oral de avaliação. O trabalho prático será realizado em grupo.

Bibliografia

Golfarelli, M., Rizzi, S., Data Warehouse Design: Modern Principles and Methodologies, McGraw-Hill Osborne
Media; 1st Edition, May 26, 2009.
Thomsen, E., OLAP Solutions, Building Multidimensional Information Systems, Jonh Wiley & Sons, Inc., 2nd
Ed, 2002.
Whitehorn, M., Meehan, P., Zare, R., Pasumansky, M., Whitehorn, M., Fast Track to MDX, Springer-Verlag New
York, LLC, 2002.
Celko, J., Joe Celko's Analytics and OLAP in SQL, Morgan Kaufmann, 1 edition, 2006.

Análise de Dados

Objectivos de aprendizagem

A realização com sucesso desta unidade curricular possibilitará aos alunos:
OA1> Entenderem a missão e os objectivos de um sistema de busness anaytics dentro de uma organização e
caracterizarem de forma clara o processo da sua implementação e justificar os investimentos necessários.
OA2> Saberem desenvolver um sistema de preparação de dados para mineração, escolher os modelos e as
técnicas de mineração adequadas ao problema em questão e aos dados envolvidos e, por fim, saberem
interpretar e avaliar os resultados alcançados com o processo de mineração desenvolvido
OA3> Integrarem numa plataforma de business analytics componentes de processamento analítico e de
mineração de dados, refletindo a sua atuação nos processos de tomada de decisão e de negócio alvos do
sistema em questão.

Conteúdos programáticos

CP1. Business Intelligence e Business Analytics.
CP2. O Modelo de Business Analytics, Vistas, Componentes e Arquiteturas.
CP3. Centros de Competência de Business Analytics.
CP4. Definição de Processos de Negócio e seus Níveis Estratégicos para Soluções.
CP5. Avaliação e Priorização de projetos de Business Analytics.
CP6. Metodologias e Processos de Mineração de Dados.
CP7. Preparação, Combinação e Exploração de Dados.
CP8. Caracterização e “Montagem” de Conjuntos de Dados.
CP9. Métodos e Algoritmos Básicos para Mineração de Dados.
CP10. Mineração e de Dados e Análise de Resultados.

Metodologias de ensino e avaliação

As 64h lectivas são divididas em 32h teóricas (T) e 32h teórico-práticas. As aulas T são de natureza expositiva.
A aulas TP permitem consolidar os conceitos leccionados nas aulas T, através da resolução de exercícios de
modelação dimensional e acompanhamento a cada grupo ao trabalho prático, bem como o ensino de
ferramentas de desenvolvimento essenciais para o trabalho prático.
Os alunos para obterem aproveitamento nesta unidade curricular terão que realizar obrigatoriamente uma
prova escrita e um trabalho prático. A avaliação final da disciplina é calculada a partir da média das notas
obtidas na prova escrita e no trabalho prático. A nota mínima na prova escrita e no trabalho prático é de 10
valores. Se na prova escrita o aluno tiver nota inferior a 10, mas superior ou igual a 8, será submetido a uma
prova oral de avaliação. O trabalho prático será realizado em grupo.

Bibliografia

Laursen, G., Thorlund, J., Business Analytics for Managers: Taking Business Intelligence Beyond Reporting
(Wiley and SAS Business Series), Wiley, 1 edition, July 13, 2010.
Pyle, D., Data Preparation for Data Mining, The Morgan Kaufmann Series in Data Management Systems, Apr 5,
1999.
Redman, T., Data Driven: Profiting from Your Most Important Business Asset, Harvard Business School Press,
Sep 15, 2008.
Witten, I., Frank E., Data Mining (Pratical Machine Learning tools and Techniques), Morgan Kaufmann, 3
edition, Feb, 2011.
Han, J., Kamber, M., Data Mining, Concepts and Techniques, 2nd edn. Elsevier, Morgan Kaufmann Publishers,
San Francisco, CA, USA, 2006.

Computação Gráfica

Visualização e Iluminação I

Objectivos de aprendizagem

Os formandos devem desenvolver as seguintes competências com a frequência deste módulo:
• Caracterizar o pipeline gráfico e o fluxo de dados. Identificar as componentes programáveis e as suas
potencialidades;
• Produzir programas a correr no GPU para obter efeitos gráficos ou processamento de dados ;
• Projectar, implementar, e avaliar soluções recorrendo à programação em GPU para problemas na área da
computação gráfica;
• Analisar algoritmos de iluminação local, e efeitos gráficos do ponto de vista da sua adequabilidade à
utilização de GPUs, e desempenho final.
Adicionalmente, pretende-se desenvolver a seguinte competência transversal:
• Exibir uma capacidade de comunicação escrita e oral adequada, promovendo a linguagem como ferramenta
de expressão e construção de pensamentos, ideias e argumentos próprios, alicerçados no espírito crítico;

Conteúdos programáticos

• O Pipeline Gráfico no estado presente e a sua evolução;
• Programação do pipeline gráfico recorrendo a linguagens como o GLSL;
• Algoritmos de iluminação local e efeitos gráficos e a sua implementação em GPU.
• Análise de desempenho para soluções em GPU.

Metodologias de ensino e avaliação

Sessões de exposição teórica para cobrir os aspectos relacionados com o pipeline gráfico e algoritmos de
iluminação local e outros efeitos gráficos, complementadas com tutoriais práticos de desenvolvimento e
avaliação de algoritmos de iluminação local.
Sessões de discussão sobre possíveis implementações e suas variações para os algoritmos acima
mencionados.
Métodos de Avaliação:
50% trabalho prático; 50% trabalho de síntese, e respetiva apresentação, sobre um artigo seminal na área

Bibliografia

Real Time Rendering ;Tomas Akenine-Moller, Eric Haines, Naty Hoffman ; AK Peters; 3rd edition, 2008
Mathematics for 3D Game Programming and Computer Graphics;Eric Lengyel;Delmar Cengage Learning
Publishing; 3rd edition; 2011

Visão por computador

Objectivos de aprendizagem

- Introduzir o estado da arte na tecnologia da imagem médica, fornecendo uma visão global sobre as normas,
técnicas, equipamentos e aplicações. Promover a análise de casos práticos e simulação de situações de
ambientes clínicos reais.
Competências:
- Reconhecer e argumentar a importância da utilização de computadores no processamento de informação
pictórica no contexto médico.
- Evidenciar conhecimento acerca dos conceitos associados aos sistemas de imagem, processamento de
imagem, visão e modelação por computador em imagem médica.
- Executar as tarefas de desenvolvimento de novos componentes funcionais utilizando as aplicações ImageJ e
OsiriX.

Conteúdos programáticos

1) Evolução na área da imagem médica – Introdução, evolução no sentido das modalidades digitais,
equipamentos de imagem médica.
2) Manipulação e processamento de imagem médica – Nível e janela, ampliação, filtros, segmentação, ROIs
(Regiões de Interesse). Aplicações clínicas.
3) Sistemas de arquivo e comunicação de imagem (PACS) - Arquitectura, tecnologias de arquivo, norma
DICOM, processos do fluxo de trabalhos e integração dos sistemas de informação hospitalar com o sistema de
informação da radiologia. Concretizações práticas.
4) Imagem Multidimensional – realinhamento e fusão de imagens, reconstruções 3D, aplicações clinicas.

Metodologias de ensino e avaliação

A metodologia de ensino intervala no tempo exposições teóricas, realização de tutoriais sobre os conceitos
apresentados e acompanhamento contínuo do trabalho prático.
O sistema de avaliação está genericamente organizado em torno de três instrumentos de avaliação: uma prova
escrita, trabalho prático individual e trabalho em grupo.
A prova escrita terá um peso de 40% na classificação final, sendo avaliadas a correcção, clareza e estrutura
das respostas, bem como a capacidade de síntese e espírito crítico evidenciados.
O trabalho prático individual (30%) é constituído pela Apresentação Oral, pelo Relatório Escrito e pelo trabalho
desenvolvido.
O trabalho prático em grupo (30%) é constituído pela Apresentação Oral, pelo Relatório Escrito e pelo trabalho
desenvolvido.

Bibliografia

Paul Suetens, “Fundamentals of Medical Imaging”, 2ª,ED, Cambridge University Press, New York, 2009
Chris Guy, Dominic Ffytche, “An Introduction to – The Principles of Medical Imaging”, revised Edition, Imperial
College Press, 2005
Alex A.T. Bui, Ricky K. Taira, “Medical Imaging Informátics”, Springer, 2010
H. K. Huang, D.Sc., FRCR (Hon.), FAIMBE, “PACS and Imaging Informatics – Basic Principles and
Applications”,2ªEd., Wiley-Blackwell, 2010
Additionally, a set of contents supporting the theoretical lectures are also supplied to the students on the
Curricular Unit Web page.

Visualização e Iluminação II

Objectivos de aprendizagem

Os formandos devem desenvolver as seguintes competências com a frequência deste módulo:
• Caracterizar a iluminação global e descrever os vários estágios do processo de síntese e visualização de
imagens;
• Explicar a equação de rendering e discutir o significado de cada um dos seus factores;
• Relacionar os vários métodos de iluminação global com o modelo geral sustentado pela equação de
rendering, inferindo quais os fenómenos de iluminação modelados;
• Projectar, implementar e avaliar soluções para novos problemas de iluminação por recombinação de
soluções conhecidas;
• Reconhecer as limitações funcionais e/ou de desempenho associadas a cada algoritmo de iluminação global.
Adicionalmente, pretende-se desenvolver a seguinte competência transversal:
• Exibir uma capacidade de comunicação escrita e oral adequada, promovendo a linguagem como ferramenta
de expressão e construção de pensamentos, ideias e argumentos próprios, alicerçados no espírito crítico;

Conteúdos programáticos

• Modelos de iluminação locais e globais, empíricos e baseados na física (Phong, Cook-Torrance, Ward);
• Radiometria e Fotometria;
• Mecanismos de transporte de luz, a BRDF e a equação de rendering;
• Algoritmos de iluminação global: Ray tracing (Clássico, distribuído e Monte Carlo), radiosidade, photon
mapping.

Metodologias de ensino e avaliação

Sessões de exposição teórica (cerca de 10 horas num total de 45 horas de contacto), complementadas com
tutoriais práticos de desenvolvimento e avaliação de algoritmos de iluminação global (20 horas num total de 45
horas de contacto).
Cerca de 10 horas (num total de 45 horas de contacto) são dedicadas a intervenções críticas dos alunos sobre
os assuntos abordados, fomentando-se a identificação de limitações e a proposta de extensões/alterações aos
algoritmos abordados.
As restantes 5 horas de contacto destinam-se a momentos de avaliação, conforme descrito abaixo.
Métodos de Avaliação:
50% exame escrito; 50% trabalho de síntese, e respetiva apresentação, sobre um artigo seminal na área.

Bibliografia

Physically Based Rendering: from Theory to Implementation; Matt Pharr and Greg Humphreys; Morgan
Kaufmann; 2nd edition, 2010
Advanced Global Illumination; Dutré, P., Bala, K. e Bekaert, P.; AK Peters, 2006

Tecnologias e Aplicações

Objectivos de aprendizagem

Os formandos devem desenvolver as seguintes competências com a frequência deste módulo:
• Conhecer as evoluções mais recentes do HTML 5 em termos de suporte OpenGL ES;
• Desenvolver aplicações de computação gráfica para ambiente Web;
• Soluções de distribuição de dados por streaming ou por web services;
• Desenvolver uma arquitetura de suporte a globos virtuais na web;
• Analisar as soluções em termos de desempenho, qualidade e conformidade com os browsers.
• Adicionalmente, pretende-se desenvolver a seguinte competência transversal:
• Exibir uma capacidade de comunicação escrita e oral adequada, promovendo a linguagem como ferramenta
de expressão e construção de pensamentos, ideias e argumentos próprios, alicerçados no espírito crítico;

Conteúdos programáticos

• HTML5, WebGL e a sua interoperabilidade;
• Desenvolvimento de aplicações gráficas em ambiente web;
• Streaming, web services e fluxo de dados;
• Arquitectura de aplicações para globos virtuais;
• Análise de desempenho, qualidade, e conformidade com os browsers.

Metodologias de ensino e avaliação

Sessões de exposição teórica para cobrir os aspectos relacionados com as particularidades da aplicação de
computação gráfica em ambiente web, complementadas com tutoriais práticos de desenvolvimento e
avaliação de algoritmos de iluminação local.
Sessões de discussão sobre possíveis implementações e suas variações para os algoritmos acima
mencionados.
Métodos de Avaliação:
50% trabalho prático; 50% trabalho de síntese, e respetiva apresentação, sobre um artigo seminal na área

Bibliografia

HTML5 A vocabulary and associated APIs for HTML and XHTML, W3C Working Draft,
http://www.w3.org/TR/html5/
Rost, R. J. (2006). OpenGL Shading Language. Interface (pp. 1-36). Addison-Wesley Professional. Retrieved
from http://www.opengl.org/documentation/glsl/
Wolff, D. (2011). OpenGL 4.0 Shading Language Cookbook. Language (p. 340). Packt Publishing. Retrieved
from http://dl.acm.org/citation.cfm?id=2049800

Computação Paralela e Distribuída

Arquiteturas Avançadas

Objectivos de aprendizagem

Um estudante que complete com sucesso a UC deverá ser capaz de demonstrar que adquiriu as seguintes
competências:
-caracterizar e avaliar qualitativa e quantitativamente a arquitetura de sistemas de computação
paralelos/distribuídos
- analisar, medir e avaliar o desempenho de sistemas de computação na execução de aplicações
- desenvolver e/ou modificar aplicações computacionais com vista a optimizar o seu desempenho e
escalabilidade.

Conteúdos programáticos

1. Evolução recente da arquitetura de processadores: pipeline, superescalaridade, multi-threading, multi-core,
many-core; hierarquia de memória em ambiente partilhado
2. Evolução do paralelismo nas arquiteturas: arquiteturas vetoriais, arquiteturas paralelas com memória
partilhada e memória distribuída, arquiteturas distribuídas em rede; análise de desempenho em arquitcturas
massivamente paralelas, com destaque para as plataformas heterogéneas com as novas gerações de GPU's
3. Avaliação de desempenho na execução de aplicações: métricas, profiling, análise e afinação de código
(destaque para ciclos iterativos, manuseamento de matrizes e chamada de funções, localidade dos dados),
benchmarking

Metodologias de ensino e avaliação

Métodos de ensino:
- exposição teórica de conceitos com exemplos
- revisão e discussão de tópicos e artigos científicos
- palestras temáticas por investigadores em ciência computacional, para posterior seleção de temas a tratar no
projeto integrado
- análise e execução laboratorial de problemas experimentais, com apresentação oral e discussão pública dos
resultados
- participação em internship internacional, na UTexas em Austin
A classificação final será uma média ponderada de elementos de avaliação relativos às atividades acima
referidas:
- prova escrita individual para aferir os conhecimentos e as capacidades intelectuais adquiridos; peso ~40%
- trabalhos de análise e de síntese documental sobre temas complementares; peso ~20%
- trabalho prático laboratorial, com elaboração de relatório (em inglês) e apresentação e defesa de trabalhos;
peso ~40%.

Bibliografia

• David Patterson, John Hennessy, Computer Architecture. A Quantitative Approach, 5th Ed., Morgan
Kaufmann, 2011
• David Kirk and Wen-mei Hwu, Programming Massively Parallel Processors, A Hands-on Approach, Morgan
Kaufmann, 2010

Algoritmos Paralelos

Objectivos de aprendizagem

Um estudante que complete com sucesso esta UC deverá ser capaz de demonstrar que adquiriu as seguintes
competências:
• Apreender os fundamentos teóricos para suporte aos algoritmos analisados
• Identificar, a diferentes níveis (complexidade, robustez, eficiência, escalabilidade, etc.) pontos fortes e fracos
dos algoritmos analisados
• Desenvolver implementações sequenciais e paralelas e discutir os resultados de desempenho e eficiência
obtidos com os algoritmos analisados
• Identificar, nos algoritmos paralelos, eventuais problemas de balanceamento de carga e/ou elevados custos
de comunicação entre os elementos de computação

Conteúdos programáticos

• Algoritmos de pesquisa e ordenação: mergesort, quicksort e bitonic; técnicas de procura paralelas: depthfirst e breadth-first
• Algoritmos matriciais em ambientes paralelos heterogéneos: multiplicação de matrizes, sistemas de
equações lineares, valores próprios, matrizes densas e esparsas, métodos dos elementos finitos e dos
gradientes conjugados
• Otimização: grafos, e spanning trees; programação dinâmica, problemas knapsack
• Algoritmos genéticos paralelos em problemas de otimização/modelação.

Metodologias de ensino e avaliação

A UC é lecionada com uma sessão teórica de 2H e uma sessão laboratorial de 1H semanalmente.
Nas sessões teóricas são lecionados os fundamentos e conceitos. As sessões teóricas são essencialmente de
exposição de matéria.
Nas sessões laboratoriais são consolidados os conhecimentos adquiridos nas sessões teóricas, através da
resolução de exercícios. Os vários exercícios permitem aos alunos a consolidação dos conhecimentos através
do desenho e implementação de vários algoritmos paralelos. As sessões laboratoriais servirão ainda para
esclarecer dúvidas.
A avaliação é realizada através de um trabalho prático.

Bibliografia

Parallel Programming in C with MPI and OpenMP, Michael J. Quinn, McGraw-Hill Education, 2003
Parallel Metaheuristics: A New Class of Algorithms, Enrique Alba, Wiley, 2005

Engenharia dos Sistemas de Computação

Objectivos de aprendizagem

•Identificar os diferentes tipos de sistemas de computação, incluindo máquinas SMP, clusters e grids e
discutir as respectivas vantagens e limitações
•Analisar e avaliar os requisitos de hardware e software com vista ao planeamento e instalação do
equipamento
•Identificar os requisitos dos utilizadores necessários para selecionar o software a instalar e a manter
•Identificar e caracterizar políticas de gestão e escalonamento de trabalhos e avaliar os resultados da sua
aplicação
•Discutir e avaliar o desempenho efetivo de programas sequenciais e paralelos nas plataformas estudadas
•Identificar os pontos de estrangulamento do ambiente de execução (run-time) face a uma determinada carga
computacional.
•Usar as ferramentas existentes, ao nível do ambiente de execução, para estudar estratégias de optimização
dos recurso partilhados nas diferentes plataformas com vista a minimizar uma determinada função de custo
(por exemplo tempo de execução).

Conteúdos programáticos

•Introdução aos clusters: arquitetura (terminologia, tecnologias, limitações), equipamentos (componentes
individuais e de rede, coordenação de recursos descentralizados)
•Clusters computacionais Linux: características, instalação e configuração de serviços, segurança
•Planeamento e construção de clusters: missão, arquitetura e suporte lógico, sistemas de ficheiros paralelo,
tecnologias de interligação, clonagem e instalações
•Gestão de clusters: modelos para a submissão de tarefas, monitorização e administração de utilizadores e
recursos, políticas de escalonamento e contabilização, segurança de dados, análise de desempenho e
afinação
•Estudo de casos: desenvolvimento de estratégias de gestão.

Metodologias de ensino e avaliação

Exposição de conceitos e análise/discussão de casos de estudo.
Trabalho individuais e em grupo na resolução de exercícios de aplicação prática de conceitos, e na avaliação
de desempenho dos diferentes componentes, no binómio hardware/software.
Apresentação dos trabalhos, com ênfase na identificação de limitações, discussão de resultados e propostas
de extensões/alterações das soluções encontradas.
Método Geral de Avaliação:
• trabalhos individuais/grupo, com elaboração de relatório: 40% a 60%
• prova escrita individual de avaliação de conhecimentos adquiridos: 40% a 60%

Bibliografia

Beowulf Cluster Computing with Linux, William Gropp, Ewing Lusk, Thomas Sterling, 2nd Ed., The MIT Press,
2003
High Performance Linux Clusters with Oscar, Rocks, OpenMosix and MPI, Joseph Sloan, O'Reilly Media, Inc.,
2004
Computer Systems, A Programmer’s Perspective, R. E. Bryant, D. R. O’Hallaron. Prentice Hall 2011

Paradigmas de Computação Paralela

Objectivos de aprendizagem

Um estudante que complete com sucesso esta UC deverá ser capaz de demonstrar que adquiriu as seguintes
competências:
• Desenvolver aplicações paralelas capazes de executar numa gama alargada de arquiteturas
• Implementar aplicações utilizando os tipos mais comuns de algoritmos paralelos
• Medir e otimizar o desempenho de aplicações em sistemas de memória distribuída
• Implementar técnicas de gestão de recursos ao nível da aplicação.

Conteúdos programáticos

• Modelos de programação: fios de execução em memória partilhada, passagem de mensagens, objetos
distribuídos, workflows
• Metodologias de desenvolvimento de aplicações paralelas: partição, comunicação, agregação e mapeamento
de tarefas e dados
• Análise de algoritmos paralelos típicos: pipelining, farming, heartbeat e divide & conquer
• Medição e otimização do desempenho de aplicações em sistemas de memória partilhada e distribuída,
homogéneos e heterogéneos
• Linguagens e utilitários de apoio ao desenvolvimento de aplicações.

Metodologias de ensino e avaliação

A UC é lecionada com uma sessão teórica de 2H e uma sessão laboratorial de 1H semanalmente.
Nas sessões teóricas são lecionados os fundamentos e conceitos. As sessões teóricas são essencialmente de
exposição de matéria.
Nas sessões laboratoriais são consolidados os conhecimentos adquiridos nas sessões teóricas, através da
resolução de exercícios. Os vários exercícios permitem aos alunos a consolidação dos conhecimentos através
da aplicação de conhecimentos visando a resolução de uma dado problema e/ou interpretação de resultados.
As sessões laboratoriais servirão ainda para esclarecer dúvidas.
A avaliação é realizada através de um trabalho prático.

Bibliografia

Principles of Parallel Programming, Calvin Lin and Lawrence Snyder, Addison-Wesley, 2009
Parallel Programming in C with MPI and OpenMP, Michael J. Quinn, McGraw-Hill Education, 2003
Designing and Programming Parallel Programs: Concepts and Tools for Parallel Software Engineering, Ian
Foster, Addison-Wesley, 1995

Engenharia de Aplicações

Arquiteturas Aplicacionais

Objectivos de aprendizagem

a) analisar e conhecer os principais patterns estruturais e de comportamento utilizados para o
desenvolvimento de sistemas de software complexo e de grande escala, tendo em conta as especificidades
arquitecturais das aplicações multi-camada.
b) saber desenvolver camadas computacionais que permitam evolução controlada e independente das
camadas de apresentação e dados e que permitam a disponibilização de serviços como mecanismo de
integração.
c) Identificar as principais características dos servidores aplicacionais por forma a escolher o modelo de
programação pretendido e saber utilizar tecnologia orientada a serviços como mecanismo de criação de
arquitecturas de software parametrizáveis.

Conteúdos programáticos

Definição Arquitectural do Sistema de Software: Patterns estruturais e de comportamento; Aspectos
avançados de programação orientada aos objectos; Arquitecturas orientadas a serviços; Modelos de
programação orientados à construção de componentes reutilizáveis; Manutenção evolutiva de arquitecturas
orientadas aos objectos.
Tecnologias de Programação Multi-Camada: Servidores aplicacionais como contexto aplicacional; Estratégias
de desenvolvimento dos mecanismos de independência multi-camada; Programação concorrente;
Mecanismos de caching e de sessão; Serviços como técnicas de integração multi-aplicação.

Metodologias de ensino e avaliação

- Exposição de conceitos e análise de casos de estudo.
- Trabalho de grupo em exercícios e pequenos estudos de caso, em certos casos com recurso a ferramentas
informáticas específicas.
- Trabalho de projecto em grupo com orientação directa da equipa docente afecta à UC.
O processo de avaliação visa aferir não apenas os conhecimentos e competências mínimas adquiridas, mas
também a capacidade revelada na sua integração e aplicação prática. Assim, a avaliação da Unidade Curricular
tem em conta duas componentes. A primeira é um exame final, contendo perguntas de desenvolvimento e
exercícios envolvendo a resolução de pequenos problemas. A segunda componente consiste no
desenvolvimento de um projecto integrador das matérias, com o fim de avaliar a aplicação do conhecimento à
resolução de problemas reais.
A classificação final será obtida pela média pesada das classificações obtidas nas duas componentes
referidas.

Bibliografia

1. Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph
Johnson, John M. Vlissides, November 1994.
2. MDA Explained: The Model Driven Architecture: Practice and Promise, Anneke Kleppe, Jos Warmer, Wim
Bast, Addison-Wesley Professional, May 2003
3. Java Persistence with Hibernate, Christian Bauer, Gavin King, Manning Publications, 2007
4. Enterprise JavaBeans, 3.0, Bill Burke, Richard Monson-Haefel, O'Reilly, May 2006
5. Artigos científicos relevantes a definir em cada ano lectivo/relevant papers (to be defined on an anual basis).

Administração de Bases de Dados

Objectivos de aprendizagem

Reconhecer e explicar os principais desafios de desempenho, fiabilidade e escala na gestão de dados.
Conhecer e descrever os mecanismos disponiveis para o processamento de interrogações e a manutenção de
garantias transacionais.
Planear e executar soluções de gestão de dados, combinando, compondo e configurando os mecanismos
disponíveis.
Estimar a medir o comportamento de sistemas de gestão de dados.

Conteúdos programáticos

Introdução: Anatomia de um sistema de gestão de bases de dados; caraterização de aplicações alvo;
identificação dos principais desafios de desempenho, fiabilidade e escala.
Execução de interrogações: Representação física de dados; operadores relacionais e iteradores; redundância
com indices e vistas; planeamento e optimização de interrogações.
Isolamento e recuperação transacionais: anomalias de concorrência; resolução com locking e multi-versão;
características de desempenho e estratégias de optimização; atomicidade vs durabilidade; métodos de logging
e checkpointing; cópias de segurança.
“Big Data”: replicação e particionamento (“sharding”) em sistemas relacionais/transacionais; sistemas
distribuídos de gestão de dados (NoSQL); modelo de dados, indixação e materialização; execução distribuída
com “map-reduce”.
Estudo de casos: benchmarks OLTP (e.g. TPC-C) e aplicação de análise exploratória de dados; sistemas
PostgreSQL e HBase.

Metodologias de ensino e avaliação

Exposição dos conceitos teóricos e demonstração pelo docente dos mecanismos e sistemas referidos.
Desenvolvimento, análise e otimização progressivos de uma aplicação ("toy benchmark"), em contacto com o
docente e seguindo um guião, que ilustra os principais desafios e soluções.
Projeto em grupo de análise e otimização de uma aplcação de dimensão realista (e.g., um implementação de
um benchmark TPC), realizado autonomamente.
A avaliação inclui duas componentes: exame escrito individual e projeto em grupo.

Bibliografia

H. Garcia-Molina, J. Ullman and J. Widom. Database Systems: The Complete Book. Prentice-Hall, 2006 (2nd
Edition).
J. Gray and A. Reuter. Transaction processing: Concepts and techniques. Morgan-Kaufmann, 1993.
B. Charron-Bost, F. Pedone, A. Schipér (Eds.) Replication: Theory and Practice. Springer, 2010.

Infraestruturas de Centro de Dados

Objectivos de aprendizagem

Compreender e explicar os compromissos entre custo, desempenho, e confiabilidade na concepção de
centros de dados e a sua tradução em tecnologias concretas.
Aplicar mecanismos de redundância, virtualização e administração centralizada no desenvolvimento e
operação de centros de dados.
Desenhar, planear e concretizar infraestruturas de armazenamento de dados escaláveis e de elevado
desempenho
Compreender e estabelecer os limites das infraestruturas definindo os thresholds para a sua revisão e
atualização
Ter uma visão global das infraestruturas e capacidade para identificar os pontos críticos das mesmas

Conteúdos programáticos

Infraestrutura de armazenamento de dados: armazenamento em rede; RAID; gestão
de volumes lógicos; sistemas de ficheiros; key-value stores; mecanismos e
políticas de salvaguarda.
Infraestrutura de serviços: serviços redundantes; virtualização de servidores.
Monitorização e gestão centralizada: gestão de parques informáticos; análise
de desempenho; monitorização.
Segurança de infraestruturas e serviços.

Metodologias de ensino e avaliação

A organização da Unidade prevê a exposição nas aulas teóricas dos conteúdos programáticos, que envolverão
também o estudo de problemas de pequena dimensão. A resolução de alguns destes problemas será
efectuada em aulas de carácter laboratorial ou em pequenos projetos.
Nesta unidade existirão vários momentos de avaliação correspondendo aos relatórios das actividades
laboratoriais realizadas e ainda uma avaliação escrita no final da unidade curricular.

Bibliografia

• Load Balancing Servers, Firewalls, and Caches, Chandra Kopparapu, Wiley
• Storage Area Network Essentials, Richard barker, Paul Massiglia, Wiley, 2000
• Blueprints for High Availability, Evan Marcus, Hal Stern Wiley
• LDAP System Administration, Gerald Carter, O'Reilly
• DNS and BIND, Paul Albitz, Cricket Liu, O'Reilly
• LDAP System Administration, Gerald Carter, O'Reilly
• Virtual Private Networks, Charlie Scott, Paul Wolfe, Mike Erwin, O'Reilly
• The Art of Capacity Planning, John Allspaw, O’Rilley

Sistemas Interativos

Objectivos de aprendizagem

• Conceber interfaces com o utilizador com consideração por aspectos de usabilidade
• Saber avaliar as interfaces concebidas recorrendo às técnicas mais apropriadas
• Compreender e explorar diferentes técnicas de desenvolvimento de camadas interactivas
• Saber desenvolver camadas de apresentação que permitam evolução controlada e independente das
camadas de lógica e de dados.

Conteúdos programáticos

• Conceitos de IHC: noções básicas de IHC (definição de usabilidade, modelo de interacção de Norman);
desenvolvimento centrado no utilizador.
• Desenvolvimento de interfaces baseado em modelos: a framework de referência Cameleon; modelação de
domínio, tarefas, interfaces abstratas e interfaces concretas, a linguagem UsiXML; prototipagem de interfaces
(protótipos de baixa e alta fidelidade); independência do dispositivo/adaptação ao dispositivo; padrões de
desenho.
• Tecnologias de desenvolvimento web: tecnologias 'server side' vs. 'cliente side'; desenvolvimento 'server
side' (HTML5, CSS, JSP); desenvolvimento 'client side' (DOM, Javascript); programação de interfaces
síncronas vs. assíncronas (AJAX).
• Avaliação de interfaces: avaliação empírica vs. avaliação analítica; avaliação por inspecção; avaliação
baseada em modelos.

Metodologias de ensino e avaliação

Aulas teóricas para exposição dos conceitos e aulas práticas laboratoriais para consolidação dos
conhecimentos adquiridos, através da realização de mini-projectos. Exame final escrito e trabalho prático
realizado em equipa.

Bibliografia

• Human-Computer Interaction, third edition. Dix et al. (2004), Pearson/Prentice-Hall.
• Designing Interfaces, 2nd edition. Jenifer Tidwell (2011), O'Reilly.
• Professional JavaScript for Web Developers. Zakas (2005), Wrox.
• Artigos e capítulos de livro a seleccionar numa base anual.

Engenharia de Sistemas de Software

Arquiteturas de Software

Objectivos de aprendizagem

* Conhecer e compreender, tendo por base o RUP, as várias etapas do processo de conceção e
desenvolvimento de um sistema de software complexo e de grande escala e usar a linguagem UML como
ferramenta de base para a sua modelação;
* Conhecer e ser capaz de aplicar princípios avançados de engenharia de software (ES), designadamente IOC
(Inversion of Control), DI (Dependency Injection) e de separação de camadas (cf. modelo MVC - model, view e
controller), bem como aplicar padrões usuais (“design patterns”);
* Saber usar tecnologias Java para desenvolvimento de aplicações Web, designadamente, Servlets, Java
Server Pages (ou Java Server Faces ou Structs) e Beans (bem como tecnologias de persistência), e usá-las
segundo os princípios do modelo MVC;
* Saber modelar em Alloy pequenos subsistemas de um dado sistema de software e realizar a verificação
formal da satisfação de propriedades que fazem parte dos requisitos funcionais de tais subsistemas.

Conteúdos programáticos

1.- Introdução às Arquiteturas de Software
Análise das plataformas J2EE e .NET
2.- Introdução ao Rational Unified Process (RUP)
3.- Engenharia de Software baseada em Modelos: UML
Modelação de sistemas software usando UML
Transformação sistemática de modelos UML
4.- JAVA avançado
Generics; Implementação de classes genéricas
Elisão de tipos em Java
Mecanismo de Reflexão
Factory methods
5.- Princípios de Engenharia de Software
Inversão de Controlo (IOC)
Injeção de Dependência (DI)
6.- Padrões de Conceção e Desenvolvimento (Design Patterns)
7.- Tecnologia Java para aplicações Web
Servlets
Java Server Pages (JSP)
Java Beans
Modelo MVC de implementação
MVC usando Structs ou JSF
Tecnologias para Persistência
DAOs (Data Access objects)
TAOs (Transfer Objects)
JPA (Java Persistence API)
Hibernate
8.- Validação e verificação de modelos de software em Alloy

Metodologias de ensino e avaliação

Aulas : 45 hours
Projectos diversos extra-aulas a realizar em grupo
Avaliação: 2 projectos de grupo

Bibliografia

F. Mário Martins, Notas Teóricas de Arquiteturas de Sofware, DI/UM, 2011.
UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition), Martin Fowler, AddisonWesley, 2003
Core Servlets and Java Server Pages, Martin Hall and Larry Brown, free e-book, 2010.
Design Patterns: Elements of reusable Object-Oriented Software, E. Gamma et al., Addison-Wesley, 2000.

Engenharia de Requisitos

Objectivos de aprendizagem

• Definir, no âmbito de todo o processo de engenharia de software, a intervenção da equipa de engenharia de
requisitos e o envolvimento formal dos stakeholders
• Escolher a forma como devem ser capturados os requisitos, em particular decidir quais as técnicas a usar
para levantar os requisitos junto das fontes identificadas
• Detectar, negociar e resolver conflitos entre os requisitos capturados
• Estruturar o documento de requisitos a dois níveis (os requisitos do utilizador e os requisitos de sistema) e
assegurar a sua qualidade e verificabilidade
• Examinar o documento de requisitos, garantindo que descreve o sistema pretendido, através de revisões
formais, de inspecções ou de criação de protótipos
• Gerir a alteração dos requisitos, através de técnicas de rastreabilidade e de análise de impacto

Conteúdos programáticos

• Processo de engenharia de requisitos
• Levantamento de requisitos
• Análise de requisitos
• Especificação e modelação de requisitos
• Validação de requisitos
• Gestão de requisitos

Metodologias de ensino e avaliação

Aulas teóricas (com alguma predominância para exposição de matéria) e aulas práticas para aplicar os
conceitos e as técnicas/práticas
Avaliação:
Teste escrito
Exercícios e projetos

Bibliografia

Aurum A, Wohlin C (eds.); Engineering and Managing Software Requirements, Springer, 2005, ISBN 978-3-54025043-2
Robertson S, Robertson J; “Mastering the Requirements Process”, 2nd edition, Addison-Wesley, 2006, ISBN 0321-41949-9

Engenharia Web

Objectivos de aprendizagem

• Conceber, desenvolver, instalar e manter aplicações web
• Identificar as questões de âmbito legal, profissional, social e ético envolvidas no desenvolvimento de
aplicações web usáveis e acessíveis
• Adaptar uma aplicação web a outros contextos de utilização, em função dos requisitos capturados
• Descrever e discutir as técnicas, os métodos e as abordagens usados no desenvolvimento web

Conteúdos programáticos

• Tecnologias
• Processo de desenvolvimento
• Engenharia de requisitos
• Conceção de aplicações web
• Adaptação
• Implementação, deployment e manutenção
• Avaliação da qualidade
• Web semântica e 2.0

Metodologias de ensino e avaliação

Aulas teóricas (com alguma predominância para exposição de matéria) e aulas práticas para aplicar os
conceitos e as técnicas/práticas
Avaliação:
Teste escrito
Exercícios e projetos

Bibliografia

Emilia Mendes, Nile Mosley (Eds.), Web Engineering, Springer, ISBN 3-540-28196-7, 2006
Gerti Kappel, Birgit Pr oll, Siegfried Reich, Werner Retschitzegger (eds.) "Web Engineering: The Discipline of
Systematic Development of Web Applications", John Wiley & Sons, 2003

Gestão do Processo de Software

Objectivos de aprendizagem

Os estudantes que completarem esta UC com sucesso, deverão ser capazes de: 1. Discutir alternativas de
aplicação das técnicas do PMBoK em projectos de software; 2. Elaborar o plano de um projeto de
desenvolvimento de sistemas de informação, seguindo as orientações do PMBoK; 3. Compreender e aplicar os
métodos adequados para registar o progresso de um projecto (Execução do Projecto); 4. Aplicar as técnicas
propostas pelo PMBoK para monitorizar o progresso de um projecto (EVM - Earned Value Management); 5.
Compreender os princípios, temas e processos propostos pelo método PRINCE2 .

Conteúdos programáticos

1. Introdução à Gestão de Projetos
1.1.Contexto de um projeto
1.2. Organização de um projeto
1.3. A Framework do PMBoK
1.4. As Áreas de Conhecimento
2. Técnicas e Ferramentas para o Planeamento de um projeto segundo o PMBOK
2.1 Planeamento do âmbito
2.2. Planeamento do tempo
2.3. Planeamento do custo
2.4 Planeamento da qualidade
2.5. Planeamento das outras áreas de conhecimento
2.6. Mecanismo para o Planeamento de Projetos de software
3. Execução, Controlo e Encerramento do projeto (PMBOK)
3.1. Relatórios do progresso
3.2. EVM – Earned Value Management
3.3. Controlar as alterações do projeto
3.4. Encerramento do projeto
4. PRINCE2 - Projects in a Controlled Environment
4.1.Introdução
4.2. Princípios
4.3. Temas
4.4. Processos
4.5. Conclusões

Metodologias de ensino e avaliação

Os métodos de ensino/aprendizagem incluem:
• o método expositivo;
• o método interrogativo;
• o método activo.
Método de avaliação:
Inclui a realização de um projecto, individual ou em grupo, versando uma das temáticas introduzidos na
unidade curricular. A nota final é calculada com base em:
Nota final = 15% relatório intermédio + 85% nota de projecto

Bibliografia

Kerzner H (2006) Project Management – A Systems Approach to Planning, Scheduling and Controlling. 9ª ed.
Wiley. Hoboken, NJ, USA.
Meredith JR, Mantel SJJ (2005) Project Management: A Managerial Approach. 6ª ed. Wiley. Hoboken, NJ, USA.
PMI (2008) A Guide to the Project Management Body of Knowledge, PMBOK. 4ª ed. PMI Standards Committee.
Upper Darby, PA, USA
TSO (2009) PRINCE2 - Managing Successful Projects with PRINCE2, TSO Ireland
Miguel, António (2006). Gestão moderna de projectos: melhores técnicas e práticas. FCA - Lisboa.
Lewis, J. P. (2011) Project planning, scheduling & control: the ultimate hands-on guide to bringing projects in
on time and on budget, 5th ed. ed., New York: McGraw-Hill Professional ; London : McGraw-Hill [distributor]

Engenharia de Redes e Serviços

Gestão de Redes

Objectivos de aprendizagem

Pretende-se dotar os alunos de conhecimentos básicos sobre as mais importantes normas e tecnologias de
gestão de redes actualmente em uso. Devem ser capazes de reconhecer as actividades inerentes à gestão de
redes e saber escolher e aplicar as tecnologias mais apropriadas para a realização dessas actividades. Devem
conseguir, também, saber identificar os custos e as principais limitações da aplicação dessas tecnologias em
vários cenários de implementação.
Abordando temáticas iminentemente práticas, apesar da intenção em garantir uma importante componente
formativa sobre os principais conceitos teóricos definidos nas normas actuais, as aulas teóricas são
complementadas, na parte prática, com pequenos projectos de desenvolvimento ou de investigação
individuais que sirvam para experimentação das ferramentas mais importantes neste domínio e que ajudem os
alunos a compreender e resolver os problemas mais comuns da gestão de redes de computadores e sistemas
de comunicações

Conteúdos programáticos

1. Motivação, necessidade da normalização das actividades de gestão.
2. Arquitecturas de gestão: OSI e TMN.
3. Arquitectura de gestão INMF/SNMP:
- Modelo de dados e paradigma de comunicação;
- Normas SMI e MIBs;
- SNMP;
- VACM e USBM
4. Tecnologias complementares:
- DMTF para gestão distribuída;
- Gestão baseada nos protocolos Web;
- Gestão por agentes móveis e/ou por delegação;
- Gestão por serviços e arquiteturas independentes dos modelos de dados, orientadas às funções de gestão.
- Políticas de gestão e outras tecnologias relevantes do estado da arte.
5. Actividades de Gestão:
- Configuração (a vários níveis);
- Monitorização de Tráfego;
- Monitorização da Qualidade de Serviço;
- Algoritmos de aprovisionamento;
- Gestão Administrativa e Estratégica.
6. Gestão de Redes TMN:
- Conceitos gerais;
- Modelos Lógicos e Funcionais;
- Interfaces Normalizados.
7. Ferramentas Freeware:
- Ping, Traceroute, NetCat e NetStat;
- MRTG, Neo, Nagios e Sysmon;
- Oak, TCPDump/Wireshark/Core.

Metodologias de ensino e avaliação

A formação base é feita à base de aulas de contacto teóricas, com exposição dos temas por parte do docente.
As aulas teóricas são complementadas com aulas práticas ou teórico práticas para resolução de exercícios
teóricos (nas primeiras aulas) e depois no acompanhamento efectivo da realização dos trabalhos práticos,
incluindo trabalhos práticos de programação de simples aplicações de gestão ou agentes SNMP. Os trabalhos
práticos vão aumentando de complexidade à medida que o semestre vai decorrendo, exigindo-se cada vez
mais autonomia por parte dos alunos.
Nas últimas semanas de aulas as teóricas servem também de apoio à realização dos trabalhos práticos.
A avaliação dos alunos é feita através de elementos de avaliação teórica (dois testes escritos e um exame), da
avaliação dos trabalhos práticos desenvolvidos individualmente ou em grupos de dois alunos, e através de
avaliação contínua da participação e empenho nas horas de contato.

Bibliografia

- Network Management, MIBs and MPLS: Principles, Design and Implementation, Stephen B. Morris, Addison
Wesley, 2003;
- SNMP, SNMPv2, SNMPv3 and RMON 1 and 2, William Stallings, Addison-Wesley, 1998;
- Network Services Magement Framework, Bruno Dias, PhD Thesis, Universidade do Minho, 2004;
- Essential SNMP, 2nd Edition, Douglas Mauro, Kevin Schmidt, O'Reilly, 2003;
- Open Source Network Administration, James Kretchmar, Prentice Hall, 2003;
- Campus Network Design Fundamentals, Diane Teare, Catherine Paquet, Cisco Press, 2005;
- Network Administrators Survival Guide, Anand Deveriya , Cisco Press 2005;
- Network Performance Baselining, Daniel J. Nassar, New Riders Publishing, 2000;
- Performance and Fault Management, Paul L. Della Maggiora, Christopher E. Elliott, Robert L. Pavone Jr., Kent
J. Phelps, James M. Thompson, Cisco Press, 2000;
- Network Management, An introduction to principles and practice, M. Subramanian, Addison Wesley, 1999.

Redes Multi-Serviço

Objectivos de aprendizagem

A presente UC visa fornecer formação em Redes Multi-Serviço promovendo o estudo e conhecimento de
protocolos de comunicações actuais e emergentes, por forma a possibilitar a integração de aplicações e
serviços em rede com requisitos de qualidade de serviço distintos em redes TCP/IP.
As competências a adquirir são as seguintes:
- Perceber a motivação para a integração de serviços e discutir o problema de suportar QoS em redes TCP/IP;
- Definir e monitorizar métricas de QoS por serviço;
- Avaliar o comportamento e implementação de mecanismos de controlo de QoS;
- Perceber, explicar e exemplificar arquitecturas de QoS actuais;
- Identificar, perceber e seleccionar protocolos de transporte adequados com base nas características e
requisitos das aplicações e dos serviços;
- Identificar, compreender e escolher as principais soluções de suporte às aplicações para sinalização e
reserva de recursos em redes TCP/IP.

Conteúdos programáticos

- Integração de serviços: motivação e princípios;
- Qualidade de Serviço (QoS): princípios, parâmetros e métricas; monitorização de QoS; mecanismos de
controlo de QoS; modelos de QoS;
- Contratos de serviço; especificação, configuração e gestão de serviços;
- Serviços de transporte avançados;
- Reserva de recursos e protocolos de sinalização.

Metodologias de ensino e avaliação

A componente teórica é estruturada num conjunto de módulos temáticos cobrindo os tópicos incluídos no
programa da UC. As aulas teóricas incluem também uma componente interactiva por forma a promover o
debate sobre trabalhos de investigação relacionados. A componente prática pode assumir diferente
perspectivas dependendo das características do módulo teórico correspondente, nomeadamente: (i) análise e
debate de tecnologias e protocolos de rede como casos de estudo; e (ii) realização de testes específicos no
laboratório de comunicações por computador. O método de avaliação inclui um exame escrito cobrindo todo o
programa da UC, e um conjunto de fichas teórico-práticas e experimentais.

Bibliografia

- Sanjay Jha, Mahbub Hassan, "Engineering Internet QoS", Artech House Inc., ISBN-13: 978-1580533416,
August 2002.
- G.Armitage, "Quality of service in IP networks : foundations for a Multi-Service Internet",Sams, ISBN-13:9781578701896, April 2000.
- Z. Wang, "Internet QoS: Architectures and Mechanisms for Quality of Service", The Morgan Kaufmann Series
in Networking, ISBN-13: 978-1558606081, March 2001.
- Colin Perkins, "RTP: Audio and Video for the Internet", Addison-Wesley Professional, ISBN-13:9780672322495, June 2003.
- A. Johnston, "SIP: Understanding the Session Initiation Protocol",Artech House Publishers; ISBN-13: 9781607839958, 3rd edition, September 2009.
- Olivier Hersent, Jean-Pierre Petit, David Gurle, "IP Telephony: Deploying Voice-over-IP Protocols", John Wiley
& Sons, ISBN-13: 978-0470023594, March 2005.

Sistemas e Serviços Multimédia

Objectivos de aprendizagem

Compreender os princípios, técnicas e algoritmos usados para representação, compressão, recuperação e
processamento de conteúdos multimédia;Conhecer e diferenciar as diferentes tecnologias e sistemas e
aplicações multimédia em rede.

Conteúdos programáticos

Sistemas e serviços Multimédia. Representação, compressão, processamento, classificação e recuperação de
multimédia. Redes Multimédia. Aplicações e Serviços Multimédia em Rede.

Metodologias de ensino e avaliação

O docente lecciona o respectivo módulo com aulas teóricas expositivas e aulas teórico-práticas com
resolução de exercícios de lápis e papel, problemas simples de programação e ensaios com equipamento ou
software específico.
A avaliação inclui componentes formativas e somativas.Para além do convencional se insiste na avaliação da
capacidade de exposição escrita e oral dos estudantes.

Bibliografia

Mrinal Kr. Mandal, Multimedia Signals and Systems, Kluwer, 2001
F. Halsall, Multimedia Communications: App., Networks, Protocols and Standards, Addison-Wesley, 2000.
Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze, Introduction to Information Retrieval,
Cambridge University Press. 2008.

Tecnologias e Protocolos de Rede

Objectivos de aprendizagem

(a) Compreender e explicar os conceitos teóricos que suportam as principais tecnologias de rede
(b) Exemplificar e discutir a utilização das tecnologias em diferentes cenários de interligação em rede
(c) Identificar, discutir e configurar os principais protocolos de encaminhamento em redes IP(v4/v6), intra e
inter-Sistemas Autónomos
(d) Compreender e explicar os princípios de mobilidade em redes IP(v4/v6), bem como analisar e configurar
soluções de mobilidade

Conteúdos programáticos

1. Tecnologias de Redes de Acesso e Core,
Redes de Acesso
Redes Metropolitanas e de Longa Distância
Planeamento e Arquitetura de Redes de Core
2. Redes Óticas
Tecnologias e Componentes de Redes Óticas
SONET/SDH e Hierarquias Digitais
Redes WDM e Redes de Transporte Ótico (OTN)
3. Interligações de Redes
Protocolos de encaminhamento Interno e Externo
Encaminhamento unicast e multicast
Interligações de Rede com IPv6
Integração IPv6 e Mecanismos de transição
4. Protocolos e Mobilidade em redes IP
Mobilidade IP (IPv4 e IPv6)
Handoff em Mobilidade
Mobilidade em Contexto Multihoming

Metodologias de ensino e avaliação

As matérias teóricas são expostas e discutidas com os alunos em períodos de duração típica semanal de
50min (aula teórica). Cada aula incluirá períodos de discussão curtos onde os estudantes poderão comentar
as matérias apresentadas e colocar questões. As aulas teóricas são complementadas por uma componente de
aulas teórico-práticas.
Os alunos são objecto de avaliação contínua, de acordo com o interesse demonstrado e com o trabalho
teórico-prático desenvolvido. A classificação final integra componentes de avaliação teórica com peso de 60%,
componentes de avaliação teórico-práticas com peso de 40%.

Bibliografia

– A. Gumaste and Tony Antony, ”First Mile Access Networks and Enabling Technologies”, Cisco Press, 2004
– Glen Kramer, ”Ethernet Passive Optical Networks”, McGraw-Hill Communications Engineering, 2005
– R. Ramaswami, K. Sivarajan, G. Sasaki, ”Optical Networks: A Practical Perspective”, 3rd Ed, Elsevier Inc.,
2010
– Ravi Malhotra, ”IP Routing”, Publisher: O’Reilly, 2002
– Silvia Hagen, ”IPv6 Essentials”, OReilly, 2006
– H. Soliman, ”Mobile IPv6 - Mobility in a wireless Internet”, Addison-Wesley, 2004.

Métodos Formais em Engenharia de Software

Análise e Teste de Software

Objectivos de aprendizagem

• Explicar as técnicas genéricas para análise de código de software.
• Desenvolver ferramentas para analisar programas e sistemas de software.
• Perceber o conceito de qualidade de software e modelos de qualidade de software.
• Desenvolver analisadores de qualidadade de software baseado em métricas.
• Construir ferramentas de software para a transformação, refactoring e evolução de programas.
• Implementar algoritmos fundamentais de análise estática de programas

Conteúdos programáticos

O programa consiste dos seguintes quatro áreas:
• Análise de Código de Programas: Técnicas de Parsing Generalised e Scannerless, Combinadores de Parsing,
Travessias Genéricas de árvores, Programação Estratégica, Análise de Tipos; Análise de fluxo de dados;
Análise inter-procedimental; Análise de controlo de fluxo.
• Qualidade de Software: Métricas para Código de Programas, Métricas para Sistemas de Software, Estudos
Empiricos para analisar qualidade software, Modelos de qualidade de Software (CMMI, ISO 9126), Certificação
de software.
• Transformação de Software: Técnicas para Transformação e Refactoring de Programas (sistema TOM e
RASCAL), Slicing e Cálculo Parcial de Programas,Técnicas para a Evolução de Software, Evolução em
engenharia dirigida por modelos.
• Teste de Software: Teste unitário e funcional; Análise da cobertura de teste; Teste orientado por modelos;
Geração automática de cenários de teste; Injecção de falhas. Componente prática: JUnit + Emma, QuickCheck,
PEX

Metodologias de ensino e avaliação

O curso está organizado em duas componentes: um teórica onde são apresentados os conceitos teóricos e
técnicas envolvidos nas quatro áreas estudadas na unidade curricular. Uma segunda componete prática será
usada para os alunos desenvolverem um pequeno projecto ao longo do curso, onde os alunos terão
oportunidade de utilizar ferramentas que usam os conceitos apresentados na parte teórica.
A avaliação terá em conta estas duas componentes e com igual peso: na parte teórica será feito um teste
individual escrito e na parte prática os alunos terão de desenvolver um projecto de software em grupo.

Bibliografia

• Generative and Transformation Techniques in Software Engineering I, II, III, Ralf Laemmel, Joost Visser and
João Saraiva editors, volumes 4143 and 5235 of LNCS Tutorials, proceedings of the summer schools
GTTSE’05, GTTSE’07 and GTTSE’09, Springer.
• Generative Programming - Methods, Tools, and Applications, Krzysztof Czarnecki and UlrichW. Eisenecker,
Addison-Wesley, June 2000.
• Partial Evaluation and Automatic Program Generation, N.D. Jones, C.K. Gomard, and P. Sestoft, Prentice Hall
International, June 1993
• Domain Specific Languages, Martin Fowler, Addison-Wesley Professional, September, 2010
• Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, John Brant,William Opdyke,
Don Roberts, Addison Wesley, 2000.
• Software Evolution, Tom Mens, Serge Demeyer, Springer 2008.
• Software Testing, Ron Patton, Sams Publication 2006

Especificação e Modelação

Objectivos de aprendizagem

Abstrair os detalhes de um componente de software por forma a obter um modelo adequado à verificação
formal; Modelar o estado de um componente de software usando o conceito unificador de relação matemática;
Especificar invariantes e pré- e pós-condições de operações usando lógica relacional; Especificar sistemas
reactivos usando lógica temporal; Utilizar ferramentas de verificação automática para estabelecer a validade
de uma propriedade de software.

Conteúdos programáticos

Introdução: o papel dos métodos formais na engenharia de software; o papel da abstracção na modelação
formal; lógica proposicional e de primeira ordem.
Lógica relacional: sintaxe e semântica; modelação usando relações; introdução ao cálculo relacional;
taxonomia e álgebra das relações.
Alloy: especificação de invariantes e de operações usando pré- e pós-condições em lógica relacional; idiomas
para modelação de comportamento dinâmico; semântica e sistema de tipos; técnicas para verificação
automática; comparação com outras linguagens de modelação.
Especificação de sistemas reactivos: lógica temporal (LTL e CTL); verificação de modelos por enumeração
explícita do espaço de estados; verificação de modelos simbólica; ferramentas para verificaçao de modelos.

Metodologias de ensino e avaliação

Metodologia de ensino: aulas teóricas expositivas; aulas teórico-práticas de demonstração de ferramentas e
realização de exercícios.
Avaliação: mini-projecto sobre Alloy (10%); mini-projecto sobre verificação de modelos (10%); exercício de
leitura (10%); teste individual (70%). Os mini-projectos e exercício de leitura são realizados em grupos de 2
alunos.

Bibliografia

Daniel Jackson. Software abstractions: logic, language, and analysis. Revised edition, MIT Press, 2012.
Christel Baier and Joost-Pieter Katoen. Principles of model checking. MIT Press, 2008.

Arquitectura e Cálculo

Objectivos de aprendizagem

Esta Unidade Curricular, que é parte integrante do perfil em Métodos Formais em Engenharia de Software, tem
por objectivo proporcionar formação em Arquitectura de Software numa perspectiva formal e com ênfase nos
sistemas reactivos, nomeadamente introduzindo
a. sistemas de transição como elementos arquitecturais de base
b. fundamentos matemáticos correspondentes: álgebra relacional e linear
c. paradigmas de modelação arquitectural: orientada aos processos e à coordenação
d. técnicas de análise arquitectural ao nível estrutural, comportamental e de desempenho
No final, o aluno deverá
a. estar familiarizado com as noções básicas de arquitectura para sistemas reactivos
b. ser capaz de modelar e analisar arquitecturas de software
c. exibir competências práticas na utilização de ferramentas computacionais de suporte.

Conteúdos programáticos

1. Introdução à arquitecture de software e aos sistemas reactivos: problemas, conceitos e métodos.
2. Fundamentos:
2.1 Sistemas de transição como elementos base em modelação de arquitectras para sistemas reactivos.
Simulação, bissimulação e invariantes. Cálculo relacional e conexões de Galois. Relação com a lógica modal e
as álgebras de processos.
2.2 Autómatos pesados e com evolução estocástica. Introdução à álgebra linear dos programas.
3. Paradigmas em modelação arquitectural
3.1 Orientação aos processos. Introdução a AADL.
3.2 Orientação à cooredanação. Introdução a Reo.
4. Análise arquitectural
4.1 Propriedades estruturais, comportamentais e desemepnho.
4.2 Cadeias de Markov interactivas - aplicação à análise arquitectural.
Laboratório:
Desenvolvimento de casos de estudo de média dimensão em modelação e análise arquitectural com recurso a
ferramentas de suporte para AADL, Reo e cadeias de Markov.

Metodologias de ensino e avaliação

O ensino é baseado em aulas teóricas e teórico-práticas, complementadas com sessões de demonstração e
uso guiado de ferramentas
A avaliação é por feita por teste individual escrito (60%) e pelo desenvolvimento de mini projectos com recuro
às ferramentas estudas (40%).

Bibliografia

A. Aldini, M. Bernardo, and F. Corradini. A Process Algebraic Approach to Software Architecture. Springer
Verlag, 2010.
F. Arbab. Reo: a channel–based coordination model for component composition. Mathematical Structures in
Comp. Sci., 14(3):329–366, 2004.
D. Garlan. Formal modeling and analysis of software architecture: Components, connectors and events. In M.
Bernardo and P. Inverardi, editors, Third International Summer School on Formal Methods for the Design of
Computer, Communication and Software Systems: Software Architectures (SFM 2003). Springer Lect. Notes
Comp. Sci, Tutorial, 2004.
Holger Hermanns. Interactive Markov Chains. Springer Verlag. 2002.
J. Rutten, M. Kwiatkowska, G. Norman, and D. Parker. Mathematical Techniques for Analyzing Concurrent and
Probabilistic Systems, P. Panangaden and F. van Breugel (eds.), volume 23 of CRM Monograph Series.
American Mathematical Society, 2004.

Verificação Formal

Objectivos de aprendizagem

• Explicar o funcionamento das técnicas mais importantes em verificação de software.
• Especificar o comportamento de programas através de contratos.
• Utilizar ferramentas para a verificação de programas anotados com contratos.
• Explicar as diferentes abordagens que têm sido utilizadas para mitigar o problema de explosão do espaço de
estados no model checking.
• Utilizar uma ferramenta de model checking simbólico.
• Utilizar ferramentas de verificação automática de software baseadas em model checking.

Conteúdos programáticos

• Demonstração de Teoremas: introdução à construção interactiva de provas.
• Teorias de Primeira Ordem: utilização de SMT solvers.
• Verificação Dedutiva: lógicas de programas; geração de condições de verificação; linguagens de
especificação comportamental de interfaces de código e design by contract. Componente prática: Dafny;
Frama-C; SPARK.
• Model Checking: model checking simbólico; redução de ordem parcial; bounded model checking.
Componente prática: SMV.
• Model Checking de Software: bounded model checking de código; mecanismos de abstracção existencial;
abstracção baseada em predicados; refinamento de abstracções. Componente prática: CBMC; BLAST.

Metodologias de ensino e avaliação

A escolaridade da UC é utilizada da seguinte forma
- Duas horas téoricas (T) semanais são utilizadas para exposição da matéria e apresentação de casos de
estudo.
- Com uma vocação complementar às anteriores, duas horas semanais teórico-práticas (TP) para a resolução
de exercícios e/ou apresentação de casos de estudo (com utilização das ferramentas estudadas) pelo docente;
e possivelmente para outros pontos, como a discussão e acompanhamento de eventuais miniprojectos a
desenvolver pelos alunos.
A avaliação é feita através de dois testes, um intercalar e outro final, ambos com peso de 50%, ou
alternativamente através de um teste (60%) e um miniprojecto de verificação, (40%).

Bibliografia

- Michael Huth and Mark Ryan. 2004. Logic in Computer Science: Modelling and Reasoning about Systems.
Cambridge University Press, New York, NY, USA.
- Edmund M. Clarke, Jr., Orna Grumberg, and Doron A. Peled. 2000. Model Checking. MIT Press, Cambridge,
MA, USA.
- José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, and Simão Melo de Sousa. 2011. Rigorous
Software Development: An Introduction to Program Verification (1st ed.). Springer Publishing Company,
Incorporated.
- Aaron R. Bradley and Zohar Manna. 2010. The Calculus of Computation: Decision Procedures with
Applications to Verification (1st ed.). Springer Publishing Company, Incorporated.

Processamento de Linguagens e Conhecimento

Gramáticas na Compreensão de Software

Objectivos de aprendizagem

No fim, os alunos deverão ter: capacidade para desenvolver especificações da sintaxe/semântica de
linguagens e problemas em geral com gramáticas; capacidade para gerar programas (protótipos) usando
ferramentas automáticas baseadas em gramáticas; capacidade de construir front-ends poderosos para a
análise de linguagens de programação; capacidade para conceber e implementar estruturas de dados
complexas para representação intermédia da informação extraída da análise do código; capacidade para criar
representações visuais adequadas à compreensão clara do conhecimento complexo detido; capacidade para
desenvolver software como uma tarefa de transformação de programas e/ou especificações em
implementações eficientes; capacidade para utilizar técnicas de transformação de programas para otimizar
programas (e.g. cálculo parcial, deteção de código morto), efetuar debugging de programase melhorar a
estrutura dos programas; capacidade de desenvolver ferramentas para ajuda à compreensão de código.

Conteúdos programáticos

Compreensão de Programas, modelos cognitivos, abordagens,
conceitos e domínio do saber;
Linguagens e Gramáticas, caracterização destes conceitos e
domínios do saber;
Conceitos sobre Gramáticas de Atributos (GA): definição formal, desenvolvimento;
Processamento de Linguagens baseado em Gramáticas: notações gramaticais, gramáticas tradutoras (GT) e
gramáticas de atributos (GA); Tradução Dirigida pela Sintaxe versus Tradução Dirigida pela Semântica;
Geração de Programas (processadores de Linguagens, protótipos rápidos) a partir de GT/GAs;
Análise de programas;
Transformação de programas;
Paradigmas para visualização de programas.

Metodologias de ensino e avaliação

Todas as aulas têm um cariz teórico-prático. No início de cada aula é
feito um balanço da aula anterior e discutidos os trabalhos ou
questões propostos (briefing); a seguir dedica-se algum tempo a
levantar questões teóricas e a apresentar as diferentes aproximações e
metodologias que suportam a sua resolução; esta parte, embora de
carácter teórico, desenvolve-se sempre em forma de diálogo com os
alunos.
Continua-se a aula numa parte mais prática em que os alunos são
convidados a pesquisar e a fazer uma síntese do que há já escrito
sobre o assunto; ou então a desenvolver experimentação de ferramentas
ou implementação de algoritmos.
A avaliação é feita com base em 2 testes escritos (ou 1 exame de
recurso final) e através de vários trabalhos (quinzenais) entregues
pelos alunos, resolvidos foras das aulas mas defendidos perante a
turma. Os trabalhos para avaliação são de dois tipos: monografias, com
sínteses dos temas pesquisados; trabalhos de implementação.

Bibliografia

Aho, Sethi and Ullman, ``Compiler Principles, Techniques and Tools'', Addison-Wesley, 1986;
Pierre Deransart, M. Jourdan, and B. Lorho, "Attribute grammars: Main results, existing systems and
bibliography''. In LNCS 341. Springer-Verlag, 1988;
A. van Deursen and Paul Klint, "Little languages: Little maintenance?''. Journal of Software Maintenance,
10:75-92, 1998;
Pedro Rangel Henriques, "Atributos e Modularidade na Especificação de Linguagens Formais''. PhD thesis,
Universidade do Minho, Dec. 1992;
C. A. R. Hoare, "Hints on programming language design''. Technical Report CS-TR-73-403, Stanford University,
CA, USA, 1973;
John E. Hopcroft, Rajeev Motwani, and Jeffrey Ullman, "Introduction to Automata Theory, Languages, and
Computation''. Addison-Wesley, 3rd ed. edition, 2006.

Processamento e Representação de Conhecimento

Objectivos de aprendizagem

No fim, os alunos deverão: ser capazes de especificar formalmente conhecimento usando várias
metodologias: taxonomias, thesaurus e ontologias; ser capazes de adicionar semântica descritiva a objetos
digitais; ser capazes de especificar taxonomias em SKOS; ser capazes de espeficicar ontologias em OWL; ser
capazes de processar ontologias; ser capazes de adicionar semântica a sítios web usando as normas RDFa e
"Open Linked Data".

Conteúdos programáticos

Origem e evolução da representação formal de conhecimento;
Especificação formal de conhecimento: taxonomias, thesaurus e ontologias;
Semântica descritiva em objetos digitais: RDF - Resource Description Framework;
SKOS - Simple Knowledge Organization System: especificação de taxonomias, thesaurus e sistemas
classificativos;
Especificação de ontologias: Entidades principais - Classes/Conceitos, Propriedades e Indivíduos; Hierarquias
de Classes; Reasoning: Inferência de Conhecimento - Lógica de
1ª ordem e Lógica Descritiva;
OWL - Ontology Web Language: OWL-Lite e OWL-DL;
Editores e navegadores de/em OWL;
Processamento de ontologias e construção de ferramentas: reasoners, editores e navegadores;
Web 2.0 e o software social;
Web 3.0: a web semântica (OWL, RDF);
Transformação de Sistemas de Informação em Sistemas de Conhecimento: RDFa - Resource Description
Framework in Attributes, Open Linked Data.

Metodologias de ensino e avaliação

Será seguida uma metodologia de ensino teórico-prática orientada ao projeto.
No início de cada aula é feita uma introdução teórica, que os alunos deverão depois aprofundar em casa, à
qual se segue a resolução de uma bateria de pequenos projetos que visam trabalhar a temática da aula.
A avaliação será feita por projetos. Nas primeiras semanas serão disponibilizados aos alunos enunciados de
projetos que deverão realizar como trabalho de casa e entregar para avaliação. Haverá um conjunto de 3 a 5
pequenos projetos cuja resolução não excederá as 2 horas. Este conjunto de pequenos projetos
corresponderá a 40% da nota. Os restantes 60% serão obtidos através de um projeto de média dimensão que
iniciará a meio do semestre e será acompanhado nas aulas até ao fim do semestre.

Bibliografia

Santos, Cláudia da Silva Amaral, "Terminologia e ontologias: metodologias para representação do
conhecimento'', Doutoramento em Linguística, 2010, U. Aveiro;
Geroimenko, Vladimir. "Dictionary of XML technologies and the semantic web''. London : Springer, cop. 2004.
(Springer professional computing). ISBN 1-85233-768-0;
Natalya F. Noy and Deborah L. McGuinness. "Ontology Development 101'': A Guide to Creating Your First
Ontology. In Development, vol. 32, Nr. 1, pp. 1-25. 2001;
S. Grimm. `"Knowledge Representation and Ontologies''. In Scientic Data Mining and Knowledge Discovery:
Principles and Foundations, 2009;
Ivo Serra and Rosario Girardi. "A Process for Extracting Non-Taxonomic Relations of Ontologies from Text''. In
Intelligent Information Management, vol. 3, Nr. 4, pp. 119-124. July, 2009;

Processamento e Representação de Informação

Objectivos de aprendizagem

No fim, os alunos deverão: conhecer o ciclo de vida documental, saber identificar as várias fases e as
tecnologias a utilizar em cada uma; ser capazes de especificar uma linguagem de anotação para um conjunto
de requisitos; ser capazes de implementar transformações de documentos para diversos fins: extração de
conhecimento, publicação na Web, intercâmbio de informação; conhecer e utilizar soluções de
armazenamento para documentos anotados; ser capazes de definir as camadas necessárias para integrar e
realizar o intercâmbio de informação entre sistemas de informação distintos; ser capazes de implementar um
projeto de publicação eletrónica recorrendo a normas internacionais abertas: XML, XSLFO e XSL; ser capazes
de programar a geração automática de sítios Web a partir de um repositório de documentos XML; ser capazes
de utilizar linguagens de anotação e respetivas ferramentas desenvolvidas por outrem.

Conteúdos programáticos

Representação da informação: evolução histórica, ASCII, Unicode;
Texto como a forma fundamental de representar informação;
Linguagens de anotação descritivas: introdução e um pouco de história, SGML, HTML, XML, JSON;
Documentação estruturada e anotação;
Algumas linguagens de anotação para a Web: XML, HTML, WML, WSDL, SVG;
Documentos XML: estrutura e conceitos, ciclo de vida documental, desenvolvimento de DTDs e Schemas;
Processamento de linguagens de anotação: árvore documental abstrata (ADA), navegação e pesquisa na ADA:
o XPath, modelos de processamento: DOM e SAX;
XSL: XML Stylesheet Language;
XQuery: XML Query Language;
XML e Bases de Dados: armazenamento de dados estruturados e semi-estruturados;
Integração e intercâmbio de informação entre sistemas: Limpeza de dados, Construção de validadores,
ferramentas de e migradores, Protocolo OAI-PMH;
Publicação Eletrónica: a norma XSL-FO;
Processamento de documentos -- HTML, CGIs, XML.

Metodologias de ensino e avaliação

Será seguida uma metodologia de ensino teórico-prática orientada ao projeto.
No início de cada aula é feita uma introdução teórica, que os alunos deverão depois aprofundar em casa, à
qual se segue a resolução de uma bateria de pequenos projetos que visam trabalhar a temática da aula.
A avaliação será feita por projetos. Nas primeiras semanas serão disponibilizados aos alunos enunciados de
projetos que deverão realizar como trabalho de casa e entregar para avaliação. Haverá um conjunto de 3 a 5
pequenos projetos cuja resolução não excederá as 2 horas. Este conjunto de pequenos projetos
corresponderá a 40% da nota. Os restantes 60% serão obtidos através de um projeto de média dimensão que
iniciará a meio do semestre e será acompanhado nas aulas até ao fim do semestre.

Bibliografia

Para a maior parte dos temas abordados a informação que se consegue encontrar na Internet é mais do que
suficiente. No entanto, ficam aqui referências que demonstraram no passado ter sido de grande ajuda:
Harold, Elliotte Rusty. ``XML in a Nutshell: a desktop quick reference''. 3rd ed . Sebastopol: O'Reilly, cop. 2005;
Ramalho, J.C. e Henriques, P. R. "XML \& XSL : da teoria à prática''. Lisboa : FCA - Editora de Informática, 2002
(Tecnologias de informação). ISBN 972-722-347-8;
Carlos Serrão / Joaquim Marques. "Programação com PHP 5.3''. Lisboa : FCA - Editora de Informática, 2010.
ISBN: 978-972-722-341-1.

Scripting no Processamento de Linguagem Natural

Objectivos de aprendizagem

No fim, os alunos deverão: ser capazes de escrever scripts para automatização de uma variedade de tarefas e
transformações; ser capazes de resolver problemas usando transformações via expressões regulares;
compreender as vantagens e o funcionamento de sistemas guiados por regras de produção (condição-reação);
ter a capacidade para construir DSLs concretas; ter a capacidade de construir e usar corpora; ter a capacidade
de extrair informação diversa a partir de corpora; ter a capacidade de construir dicionários eletrónicos; ter a
capacidade de construir pequenos protótipos para modelar linguagem natural.

Conteúdos programáticos

Linguagens de scripting: características, objetivos e conceitos, introdução a uma linguagem de scripting (e.g.
Perl);
Processadores de linguagens regulares e programação orientada à expressão regular;
Design Patterns no processamento de linguagens;
Linguagens baseadas em regras: reescrita textual e linguagens de domínio específico (DSL) baseadas em
regras de reescrita, sistemas de produção;
Processamento estrutural de árvores e DSLs baseadas nestes processadores (e.g. XML::DT,
Lingua::Treebank);
Processamento de Linguagem Natural: Análise Morfossintática de textos em língua natural:
Modelos morfológicos, Gramáticas lógicas e Definite Clause Grammars, Parsing robusto;
Processamento de Linguagem Natural: semântica e pragmática;
Dicionários multifonte e Thesaurus;
Extração de Conhecimento a partir de Textos;
Sumarização e Classificação;
Introdução à Tradução automática.

Metodologias de ensino e avaliação

Esta unidade curricular é essencialmente prática. Os alunos serão
convidados a resolver problemas específicos usando uma linguagem de
scripting em colaboração com o docente. Serão propostas tarefas
para os alunos realizarem entre aulas para aprofundar os seus
conhecimentos.
A avaliação é feita com base num teste (ou exame) e pequenos trabalhos
práticos a serem resolvidos fora das aulas.

Bibliografia

Jeffrey E. F. Friedl, "Mastering Regular Expressions, Powerful Techniques for Perl and Other Tools'', O'Reilly
Media, 2006;
Mark Jason Dominus, "Higher-Order Perl'', Morgan Kaufmann, 2005;
Daniel Jurafsky and James H. Martin. "Speech and Language Processing: An introduction to natural language
processing, computational linguistics, and speech recognition''. Pearson Prentice Hall, 2008;
Igor A. Bolshakov and Alexander Gelbukh, "Computational Linguistics: Models, Resources, Applications''.
Steven Bird, Ewan Klein, and Edward Loper, "Natural Language Processing with Python'', O'Reilly Media, 2009;
Jon Loeliger, Matthew McCullough, ``Version Control with Git, 2nd Edition'', O'Reilly Media, 2012.

Sistemas Distribuídos e Criptografia

Criptografia e Segurança da Informação

Objectivos de aprendizagem

- Compreender que a noção de segurança de um sistema é relativa a um modelo de segurança e a dicotomia
objectivo de segurança/modelo do atacante.
- Explicar as dimensões fundamentais da segurança da informação, relacionar essas dimensões fundamentais
com requisitos de segurança concretos e reconhecer as primitivas criptográficas que lhes estão associadas.
- Identificar e seleccionar protocolos criptográficos relevantes à segurança da informação em sistemas
concretos.
- Discutir o conceito de problema difícil no contexto da criptografia e teoria de números computacional
modernas; explicar o conceito deprova/redução de segurança.
- Explicar o funcionamento interno das técnicas criptográficas mais relevantes e discutir os modelos de
segurança teóricos aceites para cada técnica criptográfica.

Conteúdos programáticos

- Introdução às dimensões fundamentais da confidencialidade, integridade, autenticidade e não repúdio;
funcionalidade versus garantias de segurança.
- Problemas difíceis que servem como pressupostos de segurança e definição de tamanhos de chaves
criptográficas.
- Esquemas criptográficos: modelos e provas de segurança.
- Criptografia simétrica, cifras simétricas sequenciais, cifras simétricas por blocos, modos de funcionamento,
segurança teórica, funções de hash e MACs.
- Criptografia de chave pública, cifras assimétricas, assinaturas digitais, acordos de chave autenticados.
- Identificação, mecanismos de desafio-resposta, provas de conhecimento nulo.

Metodologias de ensino e avaliação

Exposição de conceitos e análise de casos de estudo. Trabalho de grupo em exercícios e pequenos estudos
de caso, em certos casos com recurso a ferramentas informáticas específicas. Trabalho de projecto em grupo
com orientação directa da equipa docente afecta à UC.
A avaliação basear-se-á num projecto prático (40% da nota final) e um exame escrito (60% da nota final). Em
ambas as componentes será exigida uma nota mínima de 50%.

Bibliografia

Introduction to Modern Cryptography, Katz-Lindell, CRC Press, 2007
Handbook of Applied Cryptography, Menezes-Oorschot-Vanstone, CRC Press 2001.

Sistemas Distribuídos Confiáveis

Objectivos de aprendizagem

Reconhecer e explicar a relevância da distribuição na escalabilidade e confiabilidade de sistemas
informáticos.
Reconhecer, distinguir e caracterizar desafios em sistemas distribuidos em termos de problemas e modelos
abstractos.
Identificar e discutir o papel de algoritmos distribuídos (DHT, gossip, consensus) na solução de problemas de
escala e confiabilidade.
Planear, implementar e avaliar sistemas distribuídos que resolvem problemas de escala e confiabilidade.

Conteúdos programáticos

Fundamentos de sistemas distribuídos: modelação, tempo lógico e observação global, acordo e detecção de
faltas.
Sistemas distribuídos de grande escala: comunicação epidémica, comunicação por publicação/subscrição,
arquitecturas peer-to-peer, gestão de dados com coerência eventual.
Sistemas distribuídos tolerantes a faltas: transacções distribuídas, comunicação em grupo, replicação com
coerência forte.

Metodologias de ensino e avaliação

Exposição de conceitos e análise de casos de estudo. Trabalho de grupo em exercícios e pequenos estudos
de caso, em certos casos com recurso a ferramentas informáticas específicas. Trabalho de projecto em grupo
com orientação directa da equipa docente afecta à UC.
A avaliação basear-se-á num projecto prático (40% da nota final) e um exame escrito (60% da nota final). Em
ambas as componentes será exigida uma nota mínima de 50%

Bibliografia

Distributed Systems for System Architects, Paulo Veríssimo e Luís Rodrigues, Kluwer Academic
Handbook of Peer-to-Peer Networking, Shen, X.; Yu, H.; Buford, J.; Akon, M. (Eds.), Springer
Optimistic Replication, Yasushi Saito e Marc Shapiro, Journal ACM Computing Surveys
Reliable Distributed Systems, Kenneth Birman, Springer
Replication: theory and practice, B. Charron-Bost, F. Pedone, A. Schiper (Eds), Springer

Segurança de Sistemas Informáticos

Objectivos de aprendizagem

Reconhecer as técnicas de programação responsáveis pelas mais frequentes situações de vulnerabilidade de
segurança de sistemas informáticos e aplicar boas práticas de desenvolvimento conducentes a uma maior
segurança.
Reconhecer as principais competências e boas práticas necessárias a uma eficaz administração de sistemas
no domínio da segurança.
Identificar e estimar o risco associado a potenciais vulnerabilidades das várias componentes de um sistema
informático; aplicar medidas correctivas ou mitigadoras.
Definir e implementar perímetros de segurança adequados ao risco associado às várias componentes do
sistema.
Discutir a utilização de certificados de chave pública e descrever os componentes centrais de uma Public Key
Infrastructure.
Aplicar técnicas de análise forense a situações de comprometimento da segurança de um sistema informático.

Conteúdos programáticos

Programação segura, buffer overflows, ataques e defesas contra usurpação de controlo, identificação e
exploração de vulnerabilidades, codificação segura.
Princípio do privilégio mínimo, controlo de acessos, administração de sistemas, gestão de sessões e
autenticação de utilizadores.
Modelo de segurança Web, política da origem comum, sandboxing e isolamento, segurança de aplicações
Web, cross-site scripting e SQL injection.
Certificação e infra-estruturas de chave pública, certificados X.509.
Protecção de redes, protocolos relevantes (IPSec, HTTPS, SSH, etc.), firewalls, VPNs, detecção de intrusões, e
testes de segurança.
Malware, vírus, spyware e key-loggers, e contramedidas.

Metodologias de ensino e avaliação

Exposição de conceitos e análise de casos de estudo. Trabalho de grupo em exercícios e pequenos estudos
de caso, em certos casos com recurso a ferramentas informáticas específicas. Trabalho de projecto em grupo
com orientação directa da equipa docente afecta à UC.
A avaliação basear-se-á num projecto prático (40% da nota final) e um exame escrito (60% da nota final). Em
ambas as componentes será exigida uma nota mínima de 50%

Bibliografia

Security Engineering, Ross Anderson, Wiley
Secure Programming for Linux and Unix HOWTO, by David Wheeler, http:// www.dwheeler.com/secureprograms/.

Paradigmas de Sistemas Distribuídos

Objectivos de aprendizagem

Conhecer os principais paradigmas de programação de sistemas distribuídos.
Identificar e discutir os mecanismos distribuidos que fazem parte integrante de middleware empresarial e de
plataformas de computação em nuvem.
Relacionar as questões de distribuição com as caracteristicas marcantes destas plataformas.
Planear e implementar sistemas distribuidos, nomeadamente, através da combinação e composição de
componentes de middleware e de computação em nuvem.

Conteúdos programáticos

Paradigmas de programação de comunicação entre processos: invocação remota de procedimentos e
métodos, programação orientada às mensagens e orientada aos recursos.
Paradigmas de programação de servidores concorrentes: baseados em threads, em eventos, em actores, em
fluxo de dados, em espaços de tuplos e em memória transaccional.
Middleware para desenvolvimento de sistemas distribuídos: orientado aos objectos - CORBA e JEE, orientado
às mensagens AMQP e ZMQ, orientado aos serviços e programação na cloud - web services AWS e
AppEngine.

Metodologias de ensino e avaliação

Exposição de conceitos e análise de casos de estudo. Trabalho de grupo em exercícios e pequenos estudos
de caso, em certos casos com recurso a ferramentas informáticas específicas. Trabalho de projecto em grupo
com orientação directa da equipa docente afecta à UC.
A avaliação basear-se-á num projecto prático (40% da nota final) e um exame escrito (60% da nota final). Em
ambas as componentes será exigida uma nota mínima de 50%

Bibliografia

Distributed Systems - Principles and Paradigms, Andrew Tanenbaum e Marten van Steen, 2ª Edição, Prentice
Hall
Programming Concurrency on the JVM, Venkat Subramaniam, The Pragmatic Bookshelf

Sistemas Inteligentes

Agentes Inteligentes

Objectivos de aprendizagem

- Compreender as noções gerais de agente e sistemas multiagente, enumerando e classificando diferentes
propriedades de agentes e de ambientes;
- Criar agentes com uma dada arquitetura;
- Desenhar uma sociedade de agentes e utilizá-la na resolução de um problema;
- Desenvolver soluções, nas mais diversas áreas de aplicação, usando uma metodologia de resolução de
problemas orientada ao agente;
- Criar, de uma forma prática, uma sociedade de agentes que comunicam usando uma linguagem de agentes, e
usando diferentes plataformas.

Conteúdos programáticos

Introdução
Agentes Inteligentes
Sistemas Multiagente
Coordenação
Sistemas Argumentativos
Aplicações de Agentes Inteligentes
Segurança, Confiança e Relações Jurídicas

Metodologias de ensino e avaliação

Ensino individualizado: estudo dirigido; ensino por fichas; ensino por módulos.
Ensino socializado: discussão em pequenos grupos; discussão dirigida; brainstorming; palestra.
Ensino sócio-individualizado: projeto; problemas; pesquisa.
Sessões de contacto obrigatórias.
A avaliação desta UC é concretizada por diferentes instrumentos de avaliação: trabalhos práticos individuais e
em grupo, e provas escritas.
A nota final da UC resulta de uma média ponderada dos diversos instrumentos de avaliação utilizados.

Bibliografia

Wooldrige M., An Introduction to Multiagent Systems, John Wiley & Sons, ISBN 0 47149691X, 2002;
d'Inverno M., Luck M., Understanding Agent Systems, Springer, ISBN: 978-3540407003, 2003;
Bellifemine F., Caire G., Greenwood D., Developing Multi-Agent Systems with JADE, John Wiley & Sons, ISBN:
978-0470057476, 2007;

Aprendizagem e Extração de Conhecimento

Objectivos de aprendizagem

- Identificar, descrever e definir os principais conceitos relacionados com os sistemas de dados,
processamento analítico, mineração, extração de conhecimento e aprendizagem máquina.
- Utilizar, classificar e avaliar as aplicações existentes ou a desenvolver.
- Selecionar as metodologias apropriadas e aplicar software disponível na resolução de problemas reais, ao
nível da análise de dados, mineração de dados, extração de conhecimento e tomada de decisão.
- Conhecer e ser capaz de implementar os principais algoritmos relacionados com as técnicas de mineração
de dados, extração de conhecimento e formas de aprendizagem.

Conteúdos programáticos

Sistemas de Aprendizagem
- Redes Neuronais Artificiais
- Computação Genética
- Inteligência de Grupo
- Raciocínio Baseado em Casos
Extração de Conhecimento de Dados
- Conceitos Gerais
- Objetivos
- Metodologias
- Técnicas
- Ferramentas
Aplicações

Metodologias de ensino e avaliação

Ensino individualizado: estudo dirigido; ensino por fichas; ensino por módulos.
Ensino socializado: discussão em pequenos grupos; discussão dirigida; brainstorming; palestra.
Ensino sócio-individualizado: projeto; problemas; pesquisa.
Sessões de contacto obrigatórias.
A avaliação desta UC é concretizada por diferentes instrumentos de avaliação: trabalhos práticos individuais e
em grupo, e provas escritas.
A nota final da UC resulta de uma média ponderada dos diversos instrumentos de avaliação utilizados.

Bibliografia

Han J., Kamber M., "Data Mining: Concepts and Techniques", Morgan Kaufmann, 2001;
Haykin S., "Neural Networks: A Comprehensive Foundation", 2nd Edition, Prentice-Hall, New Jersey, 1999;
Goldberg D., "Genetic Algorithms in Search, Optimization, and Machine Learning", Addison Wesley, 1989.

Computação Natural

Objectivos de aprendizagem

- Identificar, descrever e definir os principais conceitos relacionados com Computação Evolutiva (e.g.,
Intelectos Virtuais), Inteligência de Grupo (e.g. “Particle Swarm”) e Computação Natural (e.g. Redes Neuronais
Artificias, Programação Genética e Evolucionária).
- Selecionar as metodologias de resolução de problemas, assim como os paradigmas computacionais que
melhor se lhes adequam.

Conteúdos programáticos

Intelectos Virtuais
Redes Neuronais Artificiais
Algoritmos Genéticos
Programação Genética
Estratégias Evolucionárias
Programação Evolucionária
Sistemas de Vida Artificial
Inteligência de Grupo

Metodologias de ensino e avaliação

Ensino individualizado: estudo dirigido; ensino por fichas; ensino por módulos.
Ensino socializado: discussão em pequenos grupos; discussão dirigida; brainstorming; palestra.
Ensino sócio-individualizado: projeto; problemas; pesquisa.
Sessões de contacto obrigatórias.
A avaliação desta UC é concretizada por diferentes instrumentos de avaliação: trabalhos práticos individuais e
em grupo, e provas escritas.
A nota final da UC resulta de uma média ponderada dos diversos instrumentos de avaliação utilizados.

Bibliografia

De Jong K., Evolutionary Computation: A Unified Approach, MIT Press, 2006;
Eiben A.E. , Smith J.E., Introduction to Evolutionary Computing, Springer-Verlag, New York, 2003;
Engelbrecht A., Computational Intelligence: An Introduction, Wiley & Sons. ISBN 0-470-84870-7, 2007.

Sistemas Autónomos

Objectivos de aprendizagem

- Identificar, descrever e definir os principais conceitos relacionados com Sistemas Autónomos e Agentes
Robóticos.
- Realizar Sistemas Autónomos pela utilização do conceito de Agentes Inteligentes.
- Conhecer e saber utilizar o conhecimento proveniente de sensores.
- Conhecer e saber utilizar os atuadores que potenciam a mobilidade e a navegação.
- Estudar e desenvolver métodos de coordenação e interação com o meio.
- Utilizar a prototipagem e a análise de complexidade para a sua aplicação na resolução de problemas.

Conteúdos programáticos

Sistemas Robóticos Autónomos
Arquiteturas de Controlo para Sistemas Autónomos
Sensores e Atuadores
Perceção, Mobilidade e Navegação
Sistemas Multi-agente Robóticos
Coordenação e Interação
Aplicações de Sistemas Autónomos
Simulação

Metodologias de ensino e avaliação

Ensino individualizado: estudo dirigido; ensino por fichas; ensino por módulos.
Ensino socializado: discussão em pequenos grupos; discussão dirigida; brainstorming; palestra.
Ensino sócio-individualizado: projeto; problemas; pesquisa.
Sessões de contacto obrigatórias.
A avaliação desta UC é concretizada por diferentes instrumentos de avaliação: trabalhos práticos individuais e
em grupo, e provas escritas.
A nota final da UC resulta de uma média ponderada dos diversos instrumentos de avaliação utilizados.

Bibliografia

Arkin R., "Behavior Based Robotics", The MIT Press, 1998;
LaValle S., "Planning Algorithms", Cambridge University Press, 2006;
Mitchell H.B., “Multi-Sensor Data Fusion: An Introduction”, Springer, 2007.

Responsáveis das Unidades Curriculares

Unidade CurricularResponsável
Administração de Bases de DadosJosé Orlando Roque Nascimento Pereira
Agentes InteligentesPaulo Jorge Freitas Oliveira Novais
Algoritmos e ComplexidadeJorge Miguel Matos Sousa Pinto
Análise de DadosOrlando Manuel Oliveira Belo
Análise e Teste de SoftwareJoão Alexandre Baptista Vieira Saraiva
Aprendizagem e Extração de ConhecimentoCésar Analide Freitas Silva Costa Rodrigues
Arquitetura de ComputadoresLuís Paulo Peixoto Santos
Arquitetura e CálculoJoão Alexandre Baptista Vieira Saraiva
Arquiteturas AplicacionaisAntónio Luís Pinto Ferreira Sousa
Arquiteturas AvançadasAlberto José Gonçalves Carvalho Proença
Arquiteturas de SoftwareJoão Miguel Lobo Fernandes
Bases de DadosOrlando Manuel Oliveira Belo
Cálculo de ProgramasManuel Alcino Pereira Cunha
Computação GráficaAntónio José Borba Ramires Fernandes
Computação NaturalPaulo Jorge Freitas Oliveira Novais
Comunicação de DadosPedro Nuno Miranda Sousa
Comunicações por ComputadorAntónio Luís Duarte Costa
Criptografia e Segurança de InformaçãoJosé Carlos Bacelar Ferreira Junqueira Almeida
Data WarehousingOrlando Manuel Oliveira Belo
Desenvolvimento de Sistemas de SoftwareJosé Francisco Creissac Freitas Campos
Engenharia de RequisitosJoão Miguel Lobo Fernandes
Engenharia dos Sistemas de ComputaçãoAntónio Manuel Silva Pina
Engenharia WebJoão Miguel Lobo Fernandes
Especificação e ModelaçãoManuel Alcino Pereira Cunha
Gestão de RedesBruno Alexandre Fernandes Dias
Gramáticas na Compreensão de SoftwarePedro Manuel Rangel Santos Henriques
Infraestrutura de Centro de DadosAntónio Luís Pinto Ferreira Sousa
Laboratório em Engenharia InformáticaPedro Manuel Rangel Santos Henriques
Laboratórios de Informática IJosé Carlos Bacelar Ferreira Junqueira Almeida
Laboratórios de Informática IIRui Manuel Ribeiro Castro Mendes
Laboratórios de Informática IIIFernando Mário Junqueira Martins
Laboratórios de Informática IVOrlando Manuel Oliveira Belo
Paradigmas de Computação ParalelaJoão Luís Ferreira Sobral
Paradigmas de Sistemas DistribuídosPaulo Sérgio Soares Almeida
Processamento Analítico de DadosOrlando Manuel Oliveira Belo
Processamento de LinguagensPedro Manuel Rangel Santos Henriques
Processamento e Representação de ConhecimentoJosé Carlos Leite Ramalho
Processamento e Representação de InformaçãoJosé Carlos Leite Ramalho
Programação FuncionalMaria João Gomes Frade
Programação ImperativaJosé Bernardo Santos Monteiro Vieira Barros
Programação Orientada aos ObjetosJosé Francisco Creissac Freitas Campos
Redes de ComputadoresPaulo Manuel Martins Carvalho
Redes Multi-ServiçoMaria Solange Pires Ferreira Rito Lima
Scripting no Processamento de Linguagem NaturalJosé João Antunes Guimarães Dias Almeida
Segurança de Sistemas InformáticosJosé Carlos Bacelar Ferreira Junqueira Almeida
Serviços e Sistemas MultimédiaJoaquim Melo Henriques Macedo
Sistemas AutónomosCésar Analide Freitas Silva Costa Rodrigues
Sistemas de ComputaçãoAlberto José Gonçalves Carvalho Proença
Sistemas de Representação de Conhecimento e RaciocínioJosé Carlos Ferreira Maia Neves
Sistemas DistribuídosRui Carlos Mendes Oliveira
Sistemas Distribuídos ConfiáveisCarlos Miguel Ferraz Baquero Moreno
Sistemas InterativosJosé Francisco Creissac Freitas Campos
Sistemas OperacionaisOrlando Manuel Oliveira Belo
Sistemas OperativosFrancisco Coelho Soares Moura
Tecnologias e AplicaçõesJorge Gustavo Pereira Bastos Rocha
Tecnologias e Protocolos de RedeAlexandre Júlio Teixeira Santos
Verificação FormalJorge Miguel Matos Sousa Pinto
Visualização e Iluminação IAntónio José Borba Ramires Fernandes
Visualização e Iluminação IILuís Paulo Peixoto Santos
© Universidade do Minho - Departamento de Informática - Termos Legais