Programa

Licenciatura em Engenharia Informática

Programa

I Análise da correcção de programas 1.Introdução à lógica proposicional e de predicados; 2.Cálculo de Hoare e especificação formal de comandos. Pré e pós condições, a noção de invariante; 3.Prova da correcção de comandos. Análise da metodologia de Dijkstra (metodologia de desenvolvimento informal de comandos a partir da sua especificação. II Especificação e implementação de tipos de dados abstractos 1.Especificação de tipos de dados abstractos: especificação equacional; 2.Exemplos de especificação de tipos abstractos de dados: naturais, racionais, pilhas, filas, listas, conjuntos, etc; 3.Desenvolvimento de comandos abstractos; 4.Implementações estáticas e dinâmicas de diversos tipos de dados abstractos; 5.Tipos de dados abstractos e sua utilização no âmbito da programação em larga escala: metodologia da programação modular, por camadas e centrada nos dados. III Estudo de algumas formas de organização dos dados particularmente úteis e respectivos algoritmos associados (versões iterativas e recursivas) 1.Árvores, árvores n-áreas, arvores binárias, árvores de pesquisa, árvores de pesquisa equilibradas, árvores de Bayer; 2.Grafos; 3.Organização dos dados por dispersão; 4.Algoritmos de ordenação (elementares e avançados): inserção directa, selecção directa, Bubblesort, Quicksort, Heapsort, etc; 5.Técnicas de avaliação de algoritmos e introdução à problemática da complexidade.