Esta unidade curricular proporcionará aos alunos um estudo aprofundado em estruturas de dados e algoritmia fundamental para a resolução de problemas. O paradigma utilizado é o da programação genérica, utilizando a linguagem C++, dada a grande versatilidade e elegância deste tipo de programação.
1. Complexidade algorítmica
2. Contentores sequenciais
3. Árvores e tabelas de hash
4. Ordenação
O estudante deverá adquirir a capacidade de planear e implementar estruturas de dados e algoritmos para problemas de programação, tendo em vista a eficiência da solução.
Noção de complexidade algorítmica. Contentores sequenciais: vetores, listas, pilhas e filas. Árvores: ABP, B-Trees, árvores red-black. Ordenação. Contentores associativos: map, set e tabelas de hash.
Bibliografia Obrigatória
Data Structures and Algorithms in C++, Fourth Edition, Adam Drozdek, Cengage Learning.
Bibliografia Complementar (Opcional)
Não aplicável.
E-learning.
O regime de avaliação preferencial é o de avaliação contínua, constituída pela realização de 2 e-folios (trabalhos escritos em formato digital), ao longo do semestre letivo, e de um momento final de avaliação e-fólio Global (e-fólioG), a ter lugar no final do semestre, com peso de, respetivamente, 40% e 60% na classificação final. Os estudantes podem, no entanto, em devido tempo, optar um único momento de avaliação, realizando, então uma prova de Avaliação Final (exame) com o peso de 100%.
Pré-requisitos: Conhecimentos de Programação em Linguagem C e C++ (UC 21173 Introdução à Programação e UC 21093 Programação por Objetos).
Apresentação pessoal do docente