Algoritmos e Estruturas de Dados

Ano
0
Ano lectivo
2019-2020
Código
01000197
Área Científica
Área Científica do Menor
Língua de Ensino
Português
Modo de Ensino
Presencial
Duração
Semestral
Créditos ECTS
6.0
Tipo
Opcional
Nível
1º Ciclo - Licenciatura

Conhecimentos de Base Recomendados

Algoritmia e resolução de problemas, programação procedimental, programação orientada a objetos (muito importante), estruturas discretas, análise de complexidade (muito importante).

Métodos de Ensino

O processo de ensino/aprendizagem é suportado em: aulas Teóricas;  aulas Teórico-Práticas e Prática de laboratório; Demonstradores e Plataforma Mooshak.

As aulas Teóricas incorporam atenção aos Trabalhos Práticos, no sentido de os conhecimentos adquiridos serem percebidos como necessários ao desenvolvimento dos trabalhos práticos. 

As aulas Teórico-Práticas e Práticas de Laboratório estão dirigidas ao acompanhamento dos Trabalhos Práticos e apoio à plataforma Mooshak.

Resultados de Aprendizagem

Após a conclusão da unidade curricular deve demonstrar conhecimento e capacidade de compreensão nos seguintes aspetos: análise de complexidade; técnicas gerais de projeto de algoritmos; estruturas de dados e algoritmos de ordenamento (características, memória ocupada, velocidade de execução).
Aplicação de conhecimentos e compreensão: aplicação dos conhecimentos sobre análise de complexidade; reconhecimento e compreensão do caráter recursivo das várias estruturas de dados e algoritmos estudados; capacidade de análise comparativa.
Realização de julgamento/tomada de decisão: capacidade de decisão sobre as estruturas de dados e algoritmos; capacidade de decisão sobre técnicas de programação avançada.
Comunicação: reforço de competências de comunicação escrita; reforço de competências de comunicação oral na expressão de  julgamento/tomada de decisão em situações concretas.
Competências de autoaprendizagem: aprendizagem autónoma e auto-orientada na área.

Estágio(s)

Não

Programa

- Análise de complexidade.

- Técnicas gerais de projeto de algoritmos.

- Árvores. Árvores AVL, VP, amontoados, listas de saltos, árvores B.

- Grafos.

- Algoritmos de ordenamento: shell sort, merge sort, quick sort, radix sort, MSD, LSD.

- Tabelas de dispersão.

- Tópico selecionado (ex. mapeamento de cadeias de carateres)

Docente(s) responsável(eis)

Carlos Manuel Robalo Lisboa Bento

Métodos de Avaliação

Avaliação
Trabalhos Práticos: 40.0%
Prova Escrita: 60.0%

Bibliografia

** WEISS, Mark Allen. Data Structures and Problem Solving Using Java, 3nd Edition. Pearson, Addison Wesley, 2006.

** DROZDEK, Adam. Data Structures and Algorithms in C++. Thomson Learning Inc., 2005.

** SEDGEWICK, Robert. Algorithms in C: Parts 1-4, Fundamentals, Data Structures, Sorting, Searching. Addison Wesley, 1998.

** SEDGEWICK, Robert. Algorithms in C: Part 5, Graph Algorithms. Addison Wesley, 2002.

** CORMEN, Thomas H., Leiserson, Charles E., Rivest, Ronald L., Stein, Clifford. Introduction to Algorithms, 2nd Edition. The MIT Press, 2001.