Descrição:
No final do curso, os estudantes deverão ser capazes de:
1. desenvolver e implementar A&ED e analisá-los no que respeita à sua correcção
2. compreender conceitos básicos de teoria da complexidade
3. analisar a eficiência dos A&ED com base em diferentes medidas, como o tempo e a memória
4. escrever programas que usem A&ED socorrendo-se de bons princípios de programação, como seja a especificação de API's e utilizar testes apoiados em A&ED
5. resolver problemas através da utilização de ED tais como listas simples, pilhas, filas, tabelas de dispersão, acervos, árvores binárias de procura e grafos e escrever programas para estas soluções
6. resolver problemas utilizando métodos de desenho e concepçáo de algoritmos, como abordagens "greedy", decomposição, programação dinâmica, "backtracking" e escrever programas para estas soluções
7. ser capaz de, desenhar a DS apropriada, criar um algoritmo que o resolva ou identificar o problema como um que não possa ser resolvido eficientemente