Introdução à programação em Python em ambiente computacional interactivo. Expressões e tipos. Funções e procedimentos. Programação recursiva, recursão e iteração. Programação imperativa, ciclos, atribuições e efeitos colaterais, passagem de parâmetros. Programação funcional: abstracção funcional, combinadores e pontos fixos. Programação com objectos: objectos, encapsulamento, classes e herança. Programação multiparadigma e comparação entre paradigmas. Exemplos: aplicações numéricas, ordenação, algoritmos combinatórios, técnicas de optimização. Programação em grande escala: programação modular por camadas, abstracção de dados. Exemplos: torres de Hanoi sobre pilhas, implementações estáticas e dinâmicas, filas e árvores. Aplicações: matrizes esparsas, simulação estocástica, passeio aleatório, redes neuronais, vida artificial, demonstração automática. Cálculo de Hoare para verificação de programas imperativos: condição invariante e expressão variante de um ciclo, exemplos de aplicação.