Planeamento
Aulas Teóricas
Apresentação
Apresentação.
Descrição de linguagens
Computadores e processos.
Expressões e instruções
Introdução ao Python3.
Funções
Definição e invocação de funções.
Cálculo numérico em vírgula flutuante.
Representação IEEE-754.
Tuplos
Tuplos, ranges, slices e ciclos contados.
Cadeias de carateres
Representação e codificação de carateres: utf-8.
Listas
Listas.
Dicionários
Dicionários, Sets e frozensets.
List comprehensions
If-aritmético, list comprehensions e geradores.
Ficheiros e exceções
Acesso a ficheiros.
Tipos de dados abstratos
Tipos de dados abstratos.
Modelação por objetos
Modelação por objetos: UML
Programação baseada em objetos
Programação baseada em objetos: classes.
Programação orientada por objetos
Programação orientada por objetos: herança.
Teste de software
Asserções: assert.
Testes unitários
Testes unitários: unittest.
Cobertura de testes
Cobertura de testes: coverage.
Recursão
Recursão com operações adiadas.
Recursão pela cauda
Recursão pela cauda e recursão em árvore.
Programação funcional
Programação funcional: funções lambda e closures.
Funcionais sobre listas
Funcionais sobre listas: filter, map, reduce.
Profiling e complexidade
Profiling: cProfile.
Algoritmos de ordenação elementares
Algoritmos de ordenação elementares: selection, insertion, bubble.
Algoritmos de ordenação eficientes
Algoritmos de ordenação eficientes: quick e merge.
Heaps
Ordenação por heap.
Árvores de pesquisa binária
Árvores de pesquisa binária.
Tabelas de dispersão e grafos
Tabelas de dispesão.
Matrizes
Matrizes: numpy.
Cálculo científico
Cálculo científico: scipy.
Representação gráfica
Representação gráfica: matplotlib.
Extensões em C
Invocação de rotinas em C.cffi.
Instalação de pacotes
Instalação de pacotes: PyPI.
Aulas Laboratoriais
Git
Introdução à ferramenta Git.
BNF
Descrição de linguagens por gramáticas BNF.
Funções
Introdução ao Python: expressões inteiras, instruções e funções.
Cálculo em vírgula flutuante
Cálculo em vírgula flutuante: IEEE-754.
Tuplos e strings
Sequências imutáveis: tuplos e strings.
Listas e dicionários
Sequências mutáveis: listas e dicionários.
UML
Modelação orientada por objetos: UML.
Programação com objetos
Programação com objetos: classes e herança.
Testes de software
Criação de testes de software: unittest.
Recursão
Recursão: com operações adiadas, pela cauda e em árvore.
Programação funcional
Programação funcional: lambda.
Complexidade e ordenação
Complexidade: Big-O, pesquisa e ordenação.
Estruturas de dados
estruturas: heap, tree, AVL, hash, graph.