1. Análise de Complexidade de Algoritmos
1.1. Análise do comportamento de algoritmos iterativos simples
1.2. Uso de relações de recorrência para analisar a complexidade algorítmica de definições recursivas
1.3. Análise assimptótica (notações O, Teta e Omega)

2. Estratégicas algorítmicas
2.1 Algoritmos Incrementais, divisão e conquista, programação dinâmica
2.2. Análise de correcção e complexidade associadas a estratégias algorítmicas
2.3. Apresentação de algoritmos clássicos para como exemplos destas estratégias (procuras, ordenações e travessias)

3. Estruturas de Dados clássicas e algoritmos associados
3.1. Estruturas Lineares (Stacks, queues, tabelas de hash): inserção e consulta
3.2. Estruturas hierárquicas (heaps, árvores binárias balanceadas, árvores B): inserção, consulta e travessia
3.3. Grafos: travessias, árvores geradoras, caminhos mais curto, fecho transitivo

4. Classes de Complexidade
4.1 Classe P: definições e reduções polinomiais
4.2 Classe NP: Não determinismo e reduções de SAT