Estruturas de Dados

Conhecimentos de Base Recomendados

Programação

Linguagem JAVA.

(unidades curriculares Introdução à Programação, Programação, Programação Avançada)

Métodos de Ensino

Nas aulas teóricas, são apresentadas, analisadas e discutidas as estruturas de dados mais relevantes e representativas,  via zoom, conforme instruções superiores

Nas aulas laboratoriais, os alunos operacionalizam este conhecimento, realizando fichas de exercícios que englobam análise, implementação, teste e selecção de estruturas de dados. A realização de testes laboratoriais periódicos permite monitorizar continuamente o desempenho dos alunos, enquanto que a realização de seminários promove a maior integração dos alunos no processo de aprendizagem, através da preparação e realização de apresentações sobre tópicos seleccionados aos seus colegas.

Conforme o número de alunos, de acordo com instruções superiores, poderão ocorrer diversos cenários de funcionamento, a determinar aquando do arranque das aulas de dependendo do número de alunos por turma:

  • Todas as turmas funcionarem em regime síncrono alternado;
  • Regime presencial em todas as turmas laboratoriais.
  • Algumas turmas da UC funcionarem em regime presencial e outras em regime síncrono alternado (este último regime poderá funcionar, por exemplo, apenas numa turma, dependendo do número de alunos e do seu horário);

Resultados de Aprendizagem

Desenvolver as competencias relativas ao programa da UC, incluindo:

– Compreender o conceito de complexidade algoritmica

– Conhecer as diversas estruturas de dados e o perfil de complexidade das várias operações que estas suportam

– Escolher entre várias alternativas a melhor estrutura de dados a aplicar conforme o perfil de utilização pretendido.

– Compreender o funcionamento de diversas estruturas de dados e os algoritmos que lhes estão associados

– Desenvolver competências de programação genérica e recursividade

 

Programa

1 – Introdução
1.1 – Análise de Complexidade
1.2 – Programação genérica
1.3 – API de colecções
2 –  Estruturas Fundamentais
2.1- Pilhas, Filas, Árvores
     2.1.1 – Conceitos básicos
     2.1.2 – Aplicações – Árvores de Huffman
     2.1.3 – Aplicações – Representação e cálculo de expressões (infix-postfix)
2.2 – Árvores de Pesquisa
     2.2.1 – Conceitos Básicos
     2.2.2 – Árvores AVL
     2.2.3 – Árvores Red-Black
     2.2.4 – Árvores de aridade superior – B-Trees
3- Tabelas de Hash
3.1 – Conceitos Básicos
3.2 – Pesquisa linear e quadrática
3.3 – Encadeamento separado
4- Estruturas Avançadas
4.1 – Heaps
4.2 – Splay Tree
4.3 – Estruturas de dados para informação espacial e multidimensional
Nas aulas Laboratoriais irão ser implementados, aplicados e testados os algoritmos e estruturas abordados nas aulas teóricas, sendo utilizada a linguagem JAVA.

Docente(s) responsável(eis)

Estágio(s)

NAO

Bibliografia

Goodrich, Michael T. ; Tamassia, Roberto, 2011- Data structures and algorithms in Java. 5th ed.. Hoboken, NJ : John Wiley & Sons, cop. 2011. 710 p.. ISBN 978-0-470-39880-7 (1A-1-429 (ISEC) – 16300)
Weiss, Mark Allen, 1992 – Data structures and algorithm analysis. Redwood City, California : Benjamin/Cummings, 1992. 455 p.. ISBN 0-8053-9052-9 (1A-5-26 (ISEC) – 05840)
Cormen, Thomas H. ; Leiserson, Charles E. ; Rivest, Ronald L., 1997- Introduction to algorithms. Cambridge [etc.] : The MIT Press, 1997 imp. 1028 p.. ISBN 0-262-53091-0(1A-1-427 (ISEC) – 09849)

Bibliografia Complementar
Weiss, Mark Allen, 2009, Data Structures & Problem Solving Using Java,Pearson; 4th edition
Open data structures in java, 2023 – https://opendatastructures.org/
Material de apoio fornecido.