AE Algoritmos e Programação
• Área nuclear de Eng. Informática
• Oferecer competências avançadas numa área transversal aos domínios de aplicação
• Número e diversidade de oportunidades profissionais demasiado extensa para listar
Unidades Curriculares
• 1º Semestre
– Algoritmos para Lógica Computacional
– Computação Paralela e Distribuida
– Computabilidade e Complexidade (DM)
• 2º Semestre
– Algoritmos Avançados
– Linguagens de Programação
– Redes Complexas
Algoritmos para Lógica Computacional
• Analisar e resolver problemas reais utilizando lógica
– Especificação, validação e verificação de software e hardware
– Inteligência Artificial
– Sistemas de Informação Inteligentes
• Técnicas algoritmicas para implementação de sistemas dedutivos
Computação Paralela e Distribuida
• Multiprocessadores e multicomputadores
• Modelos, técnicas e formas de programação de algoritmos paralelos
– Divisão dos problemas
– Organização dos dados
– Sincronização
– Balanceamento e escalonamento
Computabilidade e Complexidade (DM)
• Classes de Complexidade
– Hierarquia polinomial
• Identificação da classe de problemas
• Redução de problemas
Algoritmos Avançados
• Formação avançada em técnicas de desenvolvimento e análise de algoritmos– Algoritmos aleatórios; algoritmos para
processamento online e em tempo real; algoritmos de aproximação
• Estruturas de dados avançadas
• Algoritmos distribuidos com recurso a memória externa
• Exemplos de aplicações
Linguagens de Programação
• Paradigmas de Programação
– Imperativo, funcional, lógico, orientado a objectos
• Alternativas no desenho e implementação das linguagens de programação
– Compilação vs. interpretação
– Tipificação estática vs. dinâmica
– Gestão de memória manual vs. automática
– Modelos de referências vs. modelos de valores
Redes Complexas
• Algoritmos, modelos e aplicações de redes complexas– Redes sociais, redes de informação, redes biológicas,
Internet
• Algoritmos e estruturas de dados escaláveis
• Análise e identificação de propriedades em redes
• Aplicações:– Difusão de informação na internet, marketing viral,
fenómenos epidemiológicos, biologia computacional, tolerância a eventos destrutivos
Localização de Falhas em Software
• Exemplo de Código com Falha
triangleType(float a, float b, float c) {
if (a == b && b == c) return Equilateral;
if (a == b || b == c || c == a) return Isosceles;
return Isosceles; /* should be Scalene */
}
• Invocação de triangleType(1, 2, 3) devolve Isosceles.
Localização de Falhas em Software
• http://en.wikipedia.org/wiki/List_of_software_bugs
• http://research.microsoft.com/en-us/groups/rise/
• https://www.coverity.com/
Instalação e Upgrade de Pacotes de Software
• https://packages.debian.org/sid/packup
• http://manpages.ubuntu.com/manpages/saucy/man1/packup.1.html
Evolução de Doenças Complexas
• Previsão de evolução de doenças complexas (p.e. neurodegenerativas) com base em dados biológicos temporais
Top Related