Noção de variedade diferenciável. Fibrados tangente e cotangente. Fibrados tensoriais. Campos de vetores e formas diferenciais. Integração em variedades. Cohomologia de De Rham. Noção de grau e teorema de Poincáre-Hopf.
Teoria de Códigos Introdução ao Problema Principal da Teoria de Códigos. Limites nos códigos. Códigos lineares. Códigos cíclicos. Códigos de Hadamard e Reed-Muller. Códigos de convolução.
Tópicos de Sistemas Complexos
Introdução: a iteração de quadráticas como modelo de evolução temporal; caos determinista; fractais. A dinâmica de redes aleatórias: evolução de grafos aleatórios; sistemas autocatalíticos e a origem da vida; modelos “small-world”; modelos “scale-free”. A dinâmica em redes: sistemas Booleanos; comportamento complexo em autómatos celulares elementares finitos. A emergência de complexidade: auto-organização em sistemas naturais e artificiais. Dinâmica evolutiva: sistemas complexos adaptativos; genótipos e fenótipos; fundamentos do paradigma neodarwinista. Algoritmos genéticos: interpretação dos resultados obtidos; a linguagem como sistema complexo adaptativo. Para além da modelação de sistemas complexos: co-evolução; redes de sistemas complexos adaptativos.
TopologiaEspaços métricos. Espaços topológicos. Axiomas de separação. Compacidade. Conexidade. Homotopia. Grupo fundamental.
Programas resumidos Opções de Informática 2, 3, 5 e 6
Métricas em Machine Learning
Conceitos sobre métricas e teoria da informação. Métodos lineares e não lineares de redução de dimensão. Árvores e florestas de decisão. Métodos de construção e de análise de
clusters.Sistemas Baseados em Similaridade
Sistemas de Aprendizagem e Computação Natural: aprendizagem baseada em sistemas de cálculo de similaridade; resolução de problemas por sistemas baseados em similaridades. Aplicações e metodologias de Machine Learning: raciocínio baseado em casos (RBC); segmentação; árvores de decisão.
Otimização em Machine Learning
Elementos de cálculo diferencial. Otimização sem restrições. Otimização com restrições. Máquina de vetores de suporte (SVM) lineares e não lineares. Redes neuronais de tipo
feed-forward. Classificadores e Sistemas Conexionistas
Sistemas de Aprendizagem e Computação Natural: aprendizagem baseada em sistemas conexionistas; desenvolvimento de sistemas de classificação e regressão. Aplicações e metodologias de Machine Learning: redes neuronais artificiais; aprendizagem por reforço; máquinas de vetores de suporte.
Dados e Aprendizagem Automática
Dados: Dados, Informação e Conhecimento; Dados Estruturados, Não Estruturados e Híbridos. Extração de Conhecimento de Dados: Caracterização do Processo de Extração de Conhecimento; Experimentação com Ferramentas de Extração de Conhecimento; Resolução de Casos de Estudo e Aplicação Prática. Sistemas de Aprendizagem. Aprendizagem Automática: Aprendizagem Supervisionada; Aprendizagem Não-supervisionada; Aprendizagem por Reforço; Redes Neuronais; Conjunto de Modelos. Computação Natural: Computação Evolucionária; Inteligência de Enxames.
Engenharia de Serviços em Rede
Programação de Aplicações e Serviços em Rede: Paradigmas de programação em rede; Redes de conteúdos; Aplicações e redes de sensores. Serviços Multimédia: Taxonomia de aplicações e serviços; Serviços de streaming; Serviços multimédia de tempo-real. Transporte e Sinalização: Gestão de sessões: protocolos de sinalização; Suporte para tempo-real; Alternativas aos protocolos TCP e UDP. Comunicação em Grupo em Redes IP: Modelo de comunicação. Endereçamento e gestão de filiação; Multicast em ambientes densos e dispersos.
Métodos Formais em Engenharia de Software
Introdução aos métodos formais: Utilização de métodos formais nas diferentes fases do processo de desenvolvimento de software; Breve história dos métodos formais. Técnicas e ferramentas para análise de modelos estruturais: Modelação de estruturas de dados usando conjuntos e relações; Especificação de requisitos de modelos estruturais com lógica relacional; Análise automática usando ferramentas de model finding. Técnicas e ferramentas para análise de modelos comportamentais: Modelação de comportamento com máquinas de estados finitas; Modelação de sistemas ciber-físicos usando autómatos híbridos; Especificação de requisitos comportamentais com lógica temporal; Análise automática usando ferramentas de model checking explícito, simbólico e bounded. Técnicas e ferramentas para análise e verificação de programas especificados por contratos: Análise estática por interpretação abstrata; Verificação dinâmica, dedutiva e bounded. Introdução ao conceito de refinamento de dados e operações.
Computação Paralela
Análise da arquitetura de processadores genéricos, ao nível do ILP e de outras formas de paralelismo (SIMD/vetorial) e na hierarquia de memória. Análise e avaliação de sistemas de computação paralelos de memória partilhada. Programação baseada no paradigma de memória partilhada. Medição de otimização de desempenho em memória partilhada, análise do impacto da granularidade do paralelismo e estratégias de distribuição de cargas computacionais. Projeto de aplicações e análise crítica do desempenho de paralelas contendo algoritmos paralelos típicos.
Aplicações e Serviços de Computação em Nuvem
Visão geral de serviços de computação em Nuvem e das várias abstrações (IaaS, PaaS e SaaS). Escalabilidade e elasticidade de aplicações e serviços para computação em Nuvem. Virtualização para computação em Nuvem (máquinas virtuais e containers). Gestão de dados/armazenamento para computação em Nuvem (sistemas de ficheiros, object stores). Aprovisionamento, instalação e gestão de aplicações distribuídas (Infrastructure-as-a-code). Monitorização de infraestruturas e serviços de computação em Nuvem. Avaliação experimental de aplicações e serviços distribuídos.
Requisitos e Arquiteturas de Software
Requisitos: definição; requisitos funcionais; requisitos não funcionais; requisitos de utilizador; conceitos relacionados. Levantamento de requisitos: processo; identificação das partes interessadas; técnicas. Documentação de requisitos: escrita em língua natural; modelação. Risco. Padrões de concepção: padrões criacionais; padrões estruturais; padrões comportamentais; anti-padrões de concepção.
Engenharia de Segurança
Gestão de Segurança de Informação: Sistemas Gestão de Segurança de Informação [família ISO/IEC 27000]: Controlos, métricas, gestão de risco, continuidade de negócio, gestão de incidentes, evidência digital; Avaliação de segurança: níveis de conformidade (ITSEC e Common Criteria); Potencial de Ataque: Cálculo e avaliação, de acordo com a metodologia de avaliação do Common Criteria. Esquemas de identificação eletrónica: nível de conformidade eIDAS; Proteção de Dados e RGPD. Métricas de segurança para Sistemas de informação (NIST SP800-55); Trustworthy Secure Systems (NIST SP800-160). Desenvolvimento de Software Seguro: Modelação de Ameaças; Boas práticas “SafeCODE”; utilização de componentes “third-party”; “Secure Software Development LifeCycle (S-SDLC)”; Avaliação de Garantias do “Software”: princípios; “Software Assurance Maturity Model (SAMM)”; Qualidade do “Software”: cobertura de código; interpretação abstracta; complexidade; compilação; “coding standards”; Teste de Segurança: guiões e “checklists”; “Application Security Verification Standard”.
Estruturas Criptográficas
Criação de um ambiente de trabalho adequado à aprendizagem de Estruturas Criptográficas; Treino no uso desse ambiente com operações criptográficas básicas: uso de "hashs", uso de "key derivation functions", uso de cifras simétricas com escolha do modo, etc. Grupos, anéis e corpos finitos definidos sobre inteiros; Os seus problemas "difíceis": fatorização e logaritmo discreto; Aplicação às técnicas criptográficas das famílias RSA e DSA; Esquemas KEM/DEM. Anéis e corpos de polinómios; Noções básicas de Teoria dos Códigos; Aplicação aos criptosistemas das famílias NTRU e McEliece. Corpos finitos e curvas elipticas; Os esquemas DH sobre curvas elípticas, eg ECDSA; Emparelhamentos e criptografia orientada à identidade; os criptosistemas BF e BLMQ. Reticulados e criptografia pós-quântica; Os seus problemas difíceis: SVP e CVP; redução a estes problemas do NTRU e McEliece; Criptosistemas sobre reticulados; Problemas de aprendizagem (LPN e LWE), suas variantes e redução a reticulados; Redução de bases e algoritmo de Coppersmith: ataques ao RSA. Cifras simétricas; Arquitectura e modos; Funções "almost bent" e "almost perfect non-linear"; Uso da transformada Walsh-Hadamard; criptoanálise linear e diferencial; Problemas MQ ("multivariate quadratic") e a criptoanálise algébrica.
Tecnologia de Segurança
Conceitos de segurança de sistemas informáticos: propriedades de segurança, proteção e controlo de acesso, modelos de segurança (ameaça e confiança). Metodologias de testes de penetração: práticas, recursos e ferramentas. Identificação e caracterização de vulnerabilidades: sistema operativo, código-fonte, aplicações, protocolos, e Common Vulnerability Scoring System (CVSS). Execução e desenvolvimento de explorações de vulnerabilidades: coleções de explorações e Metasploit. Deteção de padrões de ataque e de anomalias; prevenção de intrusão. Desenho e operação de serviços seguros: hardening, isolamento e virtualização, virtualização de funções de rede (NFV).
Verificação Formal
Satisfazibilidade lógica e teorias de primeira ordem. Utilização de SAT solvers e 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. Utilização de ferramentas de verificação dedutiva. Análise e verificação automática de programas: bounded model checking de código; interpretação abstrata; refinamento de abstrações com base em contraexemplos (CEGAR). Demonstração de Teoremas: introdução à construção interativa de provas com Coq.
Programação Ciber-física
Autómatos híbridos como modelo base para a computação ciber-física; Noção de simulação e bissimulação. Utilização deste modelo para abordar diversos aspectos da computação ciber-física. As ferramentas Uppaal e dReach; Casos de estudo. Programação ciber-física: Princípios algorítmicos e composicionalidade. Semântica operacional e denotacional da programação ciber-física. A ferramenta Lince; Casos de estudo.
Cálculo de Sistemas de Informação
Breve Introdução aos métodos formais e seu papel na programação. Uso de relações binárias na modelação abstracta de problemas; Taxonomia e álgebra das relações binárias. O lema "everything is a relation"; 'Model checking' usando a ferramenta Alloy. Uso de interpetação abstracta na modelação de problemas complexos. Cálculo relacional de propriedades grátis de funções com tipos polimórficos. Demonstração de correcção poir cálculo, usando álgebra relacional. Formalização relacional do modelo de dados 'key-value pair'. Limites da tipificação estática; Noção formal de contrato de software. Càlculo de pré-condições mais fracas. Lógica de Hoare em formato relacional.