A licenciatura em Engenharia e Informática tem a duração de três anos, correspondentes à obtenção 180 créditos ECTS, repartidos entre 174 em unidades curriculares obrigatórias e 6 em optativas em Competências Transversais.
Projeto de Programação Multiparadigma
Tópicos de Matemática para Computação
Avaliações semanais online (10%) + Participação nas aulas práticas (20%) + Testes ou exame final (50%) = max 16/20
(opcional) Trabalho de programação (20%) = max 20/20
- Avaliação periódica: Teste 1 (35%) + Teste 2 (35%) + trabalhos nas aulas práticas de MATLAB (20%) + mini-testes (10%), ou
Lipsman, Ronald L., Rosenberg, Jonathan M. "Multivariable Calculus with MATLAB ", Springer, 2018.
Solomon, Justin, ?Numerical Algorithms?, CRC Press, 2015
A unidade curricular de Mecânica e Electricidade tem por objectivo principal proporcionar aos alunos uma formação básica em termos de cálculo na óptica das ciências de engenharia. Procura também destacar o papel fundamental da Física (mecânica, gravitação, electricidade, magnetismo) e Electrotecnia (análise de circuitos com componentes passivos lineares) na formação dos alunos e a sua importância para as diversas disciplinas de engenharia do curso.
CP 1. Modelos, Unidades e Cálculo
No final do semestre, o aluno deverá:
- compreender o funcionamento de um processador com uma arquitectura básica;
- enumerar técnicas utilizadas para aumento do desempenho de um processador;
- conhecer a hierarquia de um sistema de memória actual;
- compreender o funcionamento das arquitecturas paralelas atuais.
CP1. Medidas de desempenho
- Factores que influenciam o desempenho;
- Lei de Amdahl e speed-up;
CP2. Conjunto de instruções
- Formatos de instrução
- Operações com Registos e Memórias
- Procedimentos e utilização da pilha
- Compilação e optimização
- RISC vs CISC: ARM, x86
CP3. Unidade Aritmética
- Representação em vírgula flutuante (FP);
- Arquitectura para FP.
CP4.Arquitectura básica de um processador
- Fases de uma instrução
- Unidade de controlo e datapath
- Processamento uni-ciclo e multi-ciclo.
- Pipelining: Desempenho, e conflitos:
CP5. Sistemas de memória
- Hierarquias de memória;
CP6. Arquitecturas paralelas
- Medidas de desempenho;
- Arquitecturas de memória partilhada;
- Arquitecturas de memória distribuída;
- Arquitecturas baseadas em GPU.
Os estudantes podem escolher ser avaliados através de dois percursos.
- Básico. A avaliação será exclusivamente do microprocessador MIPS e a nota máxima de 15 valores.
- Avançado. Avaliação do MIPS (15 valores) e do x86 (5 valores). A avaliação do x86 será um teste de escolha múltipla.
Em ambos os percursos a avaliação pode ser periódica (2 avaliações intercalares) ou uma avaliação final. Na avaliação periódica dos laboratórios no percurso avançado, a nota mínima em cada prova são 10 valores.
- Computer Organization and Design: The Hardware / Software Interface, Revised 4th Edition, David Patterson e John Henessy, Morgan Kaufmann, 2012;
- Arquitectura de Computadores: dos Sistemas Digitais aos Microprocessadores, 2ª Edição, Guilherme Arroz, José Monteiro e Arlindo Oliveira, IST Press, 2009;
- Introduction to Parallel Computing. Ananth Grama, Anshul Gupta, George Karypis, and Vipin Kumar. Addison Wesley, 2003.
- Textos de apoio disponibilizados no e-learning
-X86 Assembly Language and C fundamentals, J. Cavanagh, CRC Press, 2013
- Structured Computer Organization, 5th Edition, Andrew Tanenbaum, Prentice-Hall, 2005.
- CUDA by Example: An Introduction to General-Purpose GPU Programming. J. Sanders, E. Kandrot. Addison-Wesley, 2010
Pretende-se prover os estudantes de proficiência no desenho de algoritmos eficientes para problemas em diferentes contextos e domínios. A UC focará algoritmos fundamentais, métodos de desenho de algoritmos e análise.
Os estudantes devem familiarizar-se com as noções fundamentais em Teoria da Complexidade e aprender as grandes estratégias de desenho de algoritmos para uso eficiente dos recursos, quer em casos de utilização de dados em larga escala, quer para dar solução a problemas inerentemente duros (NP-hard). Para isso, será proposta a resolução de problemas específicos de várias áreas de aplicação, usando quer estruturas de dados conhecidas, quer novas estruturas (Grafos).
Os conteúdos programáticos (CP) são:
CP1: Análise de algoritmos e Teoria da Complexidade: casos para análise e algoritmos de aproximação.
CP2: Técnicas de desenho de algoritmos: Greedy, Iterativa, Incremental, Divide-and-conquer, Programação dinâmica, Randomization, Linear and Non-linear optimisation.
CP3: Grafos: representação, árvores de cobertura, travessias, caminhos mais curtos, algoritmos de fluxo.
- Exercícios: 40% (ver campo de Observações)
- Projeto (trabalho com avaliação por pares): 30%
- Exame escrito: 100%.
Cormen, Thomas, Charles Leiserson, et al. Introduction to Algorithms. 3rd ed. MIT Press, 2009.
Kleinberg, J. and Tardos, E.. Algorithm Design, Addison-Wesley, 2005.
Williamson, David P. and Shmoys, David B. The Design of Approximation Algorithms, Cambridge University Press, 2010.
Aprender os conceitos básicos de probabilidades, variáveis aleatórias (VAs) e processos estocásticos. Ser capaz de simular VAs e alguns modelos estocásticos.
1)Contagem e Probabilidades.
1a) A axiomática de Kolmogorov.
1b) Probabilidades condicionadas e Bayes.
1c) Independência.
2a) Variáveis aleatórias unidimensionais.
2b) Variáveis aleatórias multidimensionais.
2.c) Função geradora de momentos
3) Teoremas Centrais
3.a) Desigualdades de Markov e Chebyshev.
3.b) Lei dos Grandes Números.
3.c) Teorema do Limite Central.
3.d) Introdução à estimação.
4) Processos estocásticos
4.a) Processos estocásticos discretos. Processos de Poisson.
4.b) Processos estocásticos contínuos. Processos Gaussianos.
4.c) Simulação, aplicações e algoritmos
- Avaliação periódica: Teste (70%) + trabalhos nas aulas práticas de MATLAB (30%), ou
Ronald Walpole, Raymond Myers, Sharon Myers, Keying Ye, Essentials of Probability Statistics for Engineers Scientists, Pearson; 1st Edition.
Material pedagógico que aparecerá regularmente no elearning.
Krishnan, V., Probability and Random Processes, Wiley, 2015.
Ross, S., Simulation, Academic Press, Inc., 2006.
Motwani, R. e Raghavan, P., Randomized Algorithms, Cambridge University Press, 1995.
Bertsekas, D. e Tsitsiklis, J. Introduction to Probability, Athena Scientific, 2002.
Atingir um nível de programação que permita desenvolver, em colaboração, aplicações multiparadigma interativas de média escala.
CP1: Introdução ao paradigma funcional em programação e aos seus conceitos fundamentais;
CP2: Conceitos avançados de programação funcional;
CP3: Introdução às tecnologias essenciais de suporte à programação em equipa;
CP4: Programação orientada a eventos;
CP5: Padrões para interface do utilizador;
CP6: Integração de programas multiparadigma;
Projeto (PRJ) realizado em trab. de grupo com 2 entregas,discussão e aferição individual do PRJ.
As classif. possíveis na aferição individual são A,B,C ou D, definindo a nota final (nf):
A - nf = à classif. do PRJ;
B - nf = a 85% da classif. do PRJ;
C - nf = a 70% da da classif. do PRJ;
D - reprovação à UC.
Não existe av. por exame.
Assiduidade não é usada cm critério de av. ou reprov.
Dado o caráter eminentemente prático da UC não é contemplada a possibilidade de melhoria de classificação.
Becoming Functional: Steps for Transforming Into a Functional Programmer. Joshua Backfield. Publisher: O'Reilly Media.
Functional Programming in Scala. Paul Chiusano and Runar Bjarnason. Manning Publications; 1st edition.
Programming Scala: Scalability = Functional Programming + Objects. 2nd Edition
Introducing JavaFX 8 Programming. Herbert Schildt. McGraw-Hill Education.
Designing Interfaces: Patterns for Effective Interaction Design (2nd Edition). Jenifer Tidwell. O'Reilly Media.
Programming in Haskell. Graham Hutton. Cambridge University Press, 2007.
Multi-Paradigm Design for C++. James O. Coplien Publisher: Addison-Wesley Professional
Aprendizagem de modelos computacionais (desde autómatos finitos às máquinas de Turing), sua utilização na resolução de problemas e estudo das suas limitações.
I Notação matemática e técnicas de demonstração
Objectos matemáticos básicos: conjuntos, funções, relações e linguagens; Lógica, demonstrações e o princípio de indução matemática.
II Autómatos Finitos e Linguagens Regulares
Linguagens regulares e expressões regulares. Autómatos finitos deterministas e não deterministas. Reconhecimento de linguagens regulares.
III Autómatos de Pilha e Linguagens Livres de Contexto
Linguagens livres de contexto e gramáticas livres de contexto. Autómatos de pilha. Reconhecimento de linguagens livres de contexto.
IV Máquinas de Turing e Linguagens Recursivamente Enumeráveis
Linguagens Recursivamente Enumeráveis. Máquinas de Turing. Tese de Church-Turing.
I Avaliação periódica: 10 mini avaliações semanais online (10%) e duas frequências (90 %). Na avaliação periódica é obrigatório efetuar no mínimo 7 mini avaliações online. A presença nas aulas não é obrigatória.
II Exame final.
J. Martin, Introduction to Languages and the Theory of Computation, McGraw-Hill, (3ª edição)2003, (4ª edição) 2011.
F. Santos, Teoria da Computação - Folhas de Apoio, ISCTE-IUL, 2013.
F. Santos, Teoria da Computação - Exercícios, ISCTE-IUL, 2015.
N. Cutland, Computability: An Introduction to Recursive Function Theory, Cambridge University Press, 1980.
J. Hopcroft, R. Motwani e J. Ullman, Introduction to Automata Theory, Languages and Computation, Addison Wesley, 2001.
D. Mandrioli e C. Ghezzi, Theoretical Foundations of Computer Science, John Wiley, 1987
Apreender conceitos e técnicas fundamentais de análise de Fourier, interpolação e regressão, com vista a aplicações em tratamento e processamento de sinal/imagem, análise de dados e aprendizagem automática.
1) Funções complexas de variável real.
1.2. Funções complexas de variável real.
1.3. Sucessões de funções.
1.4. Produto interno e ortogonalidade.
2) Análise de Fourier e aplicações.
2.1. Séries de Fourier.
2.2. Transformada de Fourier.
2.3. A transformada de Fourier discreta, FFT e compressão de dados.
2.4. Convolução e restauração de imagem.
2.5. Wavelets e processamento de sinal.
3) Interpolação, Aproximação e Regressão
3.1. Aproximação por curvas e superfícies.
3.3. Mínimos quadrados.
3.4. Funções ortogonais.
3.5. Modelos de regressão.
3.6. Modelos de classificação.
3.7. Ligações à aprendizagem automática e ao reconhecimento de padrões.
- Avaliação periódica: 1ª teste (40%) + 2º teste (40%) + trabalhos nas aulas de MATLAB (20%), ou
- Aprovação em avaliação periódica requer uma nota mínima de 7.5 em 20 em cada um dos testes.
- Notas superiores ou iguais a 19, em qualquer das modalidades anteriores, estarão sujeitas a uma defesa de nota.
- João L. Costa, Slides da cadeira.
- Boggess, A. and Narcowich, F. J., "A First Course in Wavelets with Fourier Analysis", Wiley 2009.
- Bishop, C., "Pattern Recognition and Machine Learning", Springer, 2006.
- Strang, G., "Computational Science and Engineering", Wellesley-Cambridge Press 2007.
- Nahin, P. J., "Dr Euler's Fabulous Formula Cures Many Mathematical Ills", Princeton University Press 2009.
Ensinar aos alunos os conceitos e prática de modelação de sistemas de software, permitindo que eles passem de uma especificação em língua natural para um desenho detalhado, cobrindo as facetas estáticas e dinâmicas de um sistema de informação, com recurso ao paradigma dos objetos. Introduzir os alunos à abordagem de desenvolvimento guiado por modelos, nomeadamente com recurso a ferramentas de engenharia direta (geração de código fonte a partir de modelos) e de engenharia inversa (recuperação de modelos a partir de código fonte). Nesta UC será utilizada a linguagem de modelação UML (Unified Modeling Language) e a linguagem de programação Java.
CP1. Abordagens à conceção e desenvolvimento de sistemas de informação computacionais: casos de sucesso e insucesso. O papel da engenharia direta e inversa.
CP2. Especificação de requisitos funcionais e não funcionais em língua natural e suas características de qualidade.
CP3. Complementos de análise e síntese de diagramas de UML2 para a modelação da estrutura de um sistema de informação. Mecanismos de rastreabilidade e validação dos diagramas.
CP4. Análise e síntese de diagramas de UML2 para a modelação do comportamento de um sistema de informação. Mecanismos de rastreabilidade e validação dos diagramas.
CP5. Extração automática de modelos a partir de código fonte (engenharia inversa na perspetiva de caixa-branca). Prática com ferramentas.
CP6. Reconstituição de modelos a partir de sistemas executáveis (engenharia inversa na perspetiva de caixa-preta). Prática com aplicações web.
CP7. Geração de código fonte a partir de modelos. Prática com ferramentas.
A) PERIÓDICA com dois trabalhos de grupo (2 ou 3 alunos) e um teste escrito (1ª ou 2ª época, nota mínima de 9). O peso de cada trabalho é 25% (2 alunos) ou 20% (3 alunos), sendo o restante (50% ou 60%, respetivamente) do teste escrito. Para aferir a classificação de cada aluno nos trabalhos de grupo pode ser realizada uma discussão oral ou questionário online.
B) EXAME FINAL (1ª ou 2ª época) com um peso de 100%. Esta opção não é encorajada, dada a natureza prática dos tópicos desta UC.
Acetatos de CDSI, Fernando Brito e Abreu, disponíveis na plataforma de e-learning (à medida que os temas forem introduzidos), 2017/2018.
Seidl, Martina et al., UML @ Classroom: An Introduction to Object-Oriented Modeling, Springer, 2012.
Roques, Pascal, UML par la pratique: Etudes de cas et exercices corrigés, 6e édition, Eyrolles, 2008.
Materiais online (tutorias, filmes pedagógicos) cujos links serão explicitamente indicados na plataforma de e-learning.
UML 2.5 Specification, OMG, 2015. (http://www.omg.org/spec/UML/2.5/)
O objectivo da disciplina é dar os conhecimentos fundamentais para o estudo das aleatoridades nos sistemas aplicados à engenharia informática e da comunicação.
- Conceitos elementares das aleatoridades na engenharia informática e da comunicação.
2. Probabilidades e variáveis aleatórias;
- Variáveis aleatórias e funções probabilidade
- Independência, covariância e correlação
3. Sinais Discretos
4. Sinais aleatórios e ruído
- Sinais aleatórios
5. Conceitos de amostragem aleatória e descrição de dados
- Amostragem aleatórias
- Gráficos de sequências temporais e de probabilidades
6. Intervalos de confiança
- Intervalo de confiança para a distribuição normal
- Intervalo previsto para observações futuras
7. Regressão linear simples e correlação
8. Aplicação em simulação de sistemas
- Estatística computacional
- Geração de variáveis aleatórias e análise de estimadores
9. Teoria da Informação
- Definição de medida da informação e Capacidade do canal
- O sistema de comunicação
Existem duas modalidades possíveis: Avaliação periódica: A avaliação é feita em duas partes. A primeira parte é constituída por dois trabalhos com problemas práticos e e de simulação e a segunda parte por um exame. A nota dos trabalhos (média das duas notas obtidas nos trabalhos) tem um peso de 30% na nota final. Os restantes 70% são obtidos com a nota do exame. Avaliação por exame: A avaliação é feita por um exame final com um peso de 100% na nota final. A nota mínima do exame é de 10 valores.
[1] A. B. Carlson, P. B. Crilly, J. C. Rutledge, Communication Systems, 4th Ed., McGraw-Hill, 2002.
[2] D. C. Montgomery and G. C. Runger, Applied Statistics and Probability for Engineers, John Wiley & Sons, New York, (3rd edition), 2003.
[3] S. M. Ross, Introduction to Probability and Statistics for Engineers and Scientists, John Wiley & Sons, New York, 1987.
[4] P. L. Meyer. Probabilidades. Aplicações à Estatística, Livros Técnicos e Científicos Editora S.A., Rio de Janeiro, 1981.
[5] B. J. Murteira. Probabilidades e Estatística, vol. I e II, Mcgraw-Hill, Lisboa, 1990 (2a edição).
[6] B. J. Murteira, C. S. Ribeiro, J. Andrade e Silva e C. Pimenta. Introdução à Estatística, Mcgraw-Hill, Lisboa, 2002.
[7] A. Papoulis, S. U. Pillai, Probability, Random Variables and Stochastic Processes, 4th Ed., McGraw-Hill, 2002.
[8] P. Beckmann, Probability in Communication Engineering, Harcourt, Brace & World Inc., 1967.
[9] K. Cattermole and J. O´Reilly, Problems of Randomness in Communication Engineering, John Wiley & Sons, 1984.
[10] J.P. Marques de Sá, Applied statistics using SPSS STATISTICA and MATLAB, Springer 2003.
[11] D.D. Pestana e S.F. Velosa, Introdução à probabilidade e à Estatística, vol.1, Ed. Fundação Calouste Gulbenkian, 2002.
[12] W. L. Martinez and A. R. Martinez, Computational Statistics Handbook with Matlab, Chapman&Hall/CRC, 2002.
Proporcionar a aquisição da capacidade de (OG1) identificar necessidades que possam ser satisfeitas através da utilização de agentes de software imersos numa sociedade de atores humanos e de outros agentes de software, e de (OG2) identificar os requisitos dos agentes de software a desenvolver, em termos dos papéis de agente necessários e das necessidades de comunicação; e (OG3) proporcionar a aprendizagem de abordagens fundamentais para a conceção de agentes de software com capacidades de controlar autonomamente o seu comportamento, incluindo a coordenação da sua vida numa sociedade, e de comunicar com os utilizadores e com outros agentes.
(P1) Agentes autónomos e sociedades de agentes, incluindo as definições básicas e as características. Persistência no tempo, autonomia, e adaptação a alterações do mundo.
(P2) Análise concetual de sociedades de agentes a nível da identificação das competências / serviços / papéis, dos agentes e das mensagens que devem trocar
(P3) Descoberta, composição e prestação de serviços em sociedades de agentes
(P4) Mecanismos de controlo: Algoritmos de planeamento e regras de produção
(P5) Comunicação entre agentes (linguagens de comunicação e de conteúdo)
(P6) Plataforma de agentes e software para o desenvolvimento de agentes
Dois testes, ao longo do semestre, valendo 50% cada um
Autonomous agents and agent societies
Conceptual analysis of agent societies. Service discovery, composition and provision
Control mechanisms: Planning and Production Rules
Course notes + course software
Agent Platform and Software
Kouichi Matsuda. 2004. Personal Agent-Oriented Virtual Society. Advanced Knowledge International. ISBN-10: 0975100432. ISBN-13: 978-0975100431
Control mechanisms: Search, Planning and Production Rules
Nils Nilsson. 1982. Principles of Artificial Intelligence. Springer-Verlag Berlin Heidelberg
FIPA. 2000. FIPA Communicative Act Library Specification. http://www.fipa.org/specs/fipa00037/SC00037J.pdf
- Projeto Final (70%, incluindo 35% respeitantes ao trabalho de grupo (relatório e software), e 35% sobre uma oral individual).
Projeto prático em grupo com peso de 10 valores na nota final (as avaliações dos projetos são individuais para cada membro do grupo) e frequência (teste escrito) com peso de 10 valores na nota final.
Existe nota mínima de 50% para o projeto e nota mínima de 50% para a frequência.
Teste escrito sobre o total da matéria com peso de 100% na nota final da UC.
As interfaces com o utilizador são fundamentais para a utilização e aceitação de sistemas interactivos sendo essencial perceber e ser capaz de especificar, desenhar e criar interfaces.
CP1: Factores humanos, psicologia e design de sistemas interactivos; O computador, dispositivos de entrada de texto, dispositivos de posição e selecção, output, processamento
CP9: Multimédia e web design; Vídeo digital para web e multimédia, e o design de interacção H-C
Avaliação Contínua, com Trabalho individual de apresentação e discussão de texto dado (25% da nota final), Miniteste individual (25% da nota final) e Projecto em grupo (50% da nota final) com desenvolvimento faseado de projecto, analisado/avaliado etapa a etapa, todas as semanas. Nota mínima: 8 valores em cada componente. Basta não ter nota mínima numa das componentes para o aluno reprovar de imediato na Avaliação Contínua. Projecto pode contar para o Exame com 40% de peso.
PF Lopes, D Jardim, I Alexandre, Math4Kids, Proc. First Iberian Workshop on Serious Games and Meaningful Play (SGaMePlay'2011), Chaves, Portugal, June, 2011, ISBN: 978-989-96247-5-7, pp 711-716.
A Licenciatura em Engenharia Informática destina-se a formar profissionais capazes de responder com agilidade aos desafios organizacionais em que a tecnologia possa valorizar as componentes do conhecimento e da inovação, não se limitando a uma intervenção ao nível da eficiência e informatização dos processos.
A formação geral da Licenciatura oferece ao aluno as competências técnicas e científicas para desempenhar funções em qualquer área da Engenharia Informática, das quais se destacam:
especificar, conceber e desenvolver sistemas de informação adequados aos objetivos e necessidades das empresas e à sua cultura organizacional;