Noções Gerais da Programação Modular: Construção descendente de programas; Algumas regras da "boa programação".
Verificação Formal da Correcção de Algoritmos: A noção de invariante de ciclo; A Axiomática de Hoare; Verificação formal da correcção de diversos algoritmos de pesquisa e de ordenação.
Algoritmos Recorrentes: Construção de soluções recorrentes; "Backtracking"; Análise de algoritmos recorrentes de ordenação.
Eficiência Computacional e Análise de Complexidade: Algoritmos de pesquisa; Algoritmos de ordenação; Algoritmos recorrentes; Algoritmos para multiplicação de matrizes; Algoritmos para concordância de modelos ("Pattern Matching").
Estruturas Dinâmicas de Dados: Estruturas estáticas vs. Estruturas dinâmicas; Listas simplesmente ligadas – representações e operações habituais; Listas circulares simplesmente ligadas; Listas duplamente ligadas; Listas generalizadas.
Tipos Abstractos de Dados: Modularidade e abstracção dos tipos de dados; Os tipos abstractos de dados Lista linear; Polinómio linear, Cadeia de caracteres, etc. Os tipos abstractos de dados Pilha, Fila, Deque e suas aplicações; O tipo abstracto de dados Árvore Binária: estruturas de dados alternativas; travessias; árvores binárias de pesquisa; árvores binárias equilibradas; aplicações .