Algoritmos e Estruturas de Dados
Código
01060934Créditos ECTS
6Objetivos
1. Saber escolher, criar e utilizar estruturas de dados.
2. Saber escrever algoritmos iterativos e recursivos sobre estruturas de dados.
3. Adquirir conhecimentos sobre algoritmos de ordenação e de pesquisa em estruturas de dados.
4. Saber analisar a complexidade dos algoritmos de ordenação e de pesquisa em estruturas de dados
5. Saber resolver problemas de pequena e média escala, usando as estruturas de dados e as estratégias mais adequadas e os algoritmos mais eficientes.
Programa
1. Introdução ao estudo da eficiência de algoritmos: critérios para avaliar a eficiência de um algoritmo; a notação do O maiúsculo.
2. Tipos de Dados Abstratos (TDA): pilhas, filas, listas, árvores binárias, grafos e dicionários.
3. Implementações vetoriais e dinâmicas de TDAs.
4. Algoritmos de pesquisa: sequencial, binária, com árvores binárias, com tabelas de dispersão, caminho mais curto e de menor custo e árvores de suporte mínimas em grafos.
5. Algoritmos de ordenação: inserção direta, seleção direta, bubble sort, shellsort, mergesort, quicksort, radix sort, heapsort.
Métodos de Ensino
Nas aulas teóricas apresentam-se os conceitos elementares de programação com recurso a exemplos e demonstrações e analisam-se e discutem soluções a concretizar nas aulas práticas ou durante o estudo autónomo.
As aulas práticas laboratoriais funcionam articuladas com as aulas teóricas e com as sugestões de atividades a realizar durante o tempo de estudo autónomo, promovendo a resolução de problemas, de pequena e média escala, com soluções algorítmicas, usando a linguagem Python.
Os estudantes desenvolvem um projeto em grupo que é o elemento aglutinador dos conteúdos aprendidos ao longo da unidade curricular, que permite analisar, desenhar e implementar pequenos programas numa situação mais próxima da realidade, e desenvolver competências intrapessoais e interpessoais para o trabalho autónomo e em equipa.
A plataforma de e-Learning Moodle da UAc (em http://moodle.uac.pt) é utilizada como componente digital do ambiente de aprendizagem, disponibilizando informação e documentação relevante do funcionamento da UC, espaços de comunicação geral sobre a UC, atividades de aprendizagem propostas, individuais e em grupo, com os respetivos recursos e avaliação.
AVALIAÇÃO:
Em cada edição da unidade curricular, a avaliação, contínua e periódica, é constituída por uma componente individual teórico-prática que tem peso entre 50% e 70% e uma componente de projeto em grupo que tem peso entre 30% e 50%, ambas com nota mínima de 10 valores.
Bibliografia
Essencial
- Lambert, K. A. (2019). Fundamentals of Python: Data Structures (Second Edition). Boston, USA: Cengage. ISBN: 978-035-712-275-4
- Costa, E. (2024). Programação em Python : Fundamentos e Resolução de Problemas (2ª edição). FCA, ISBN: 978-972-722-940-6
Complementar
- Goodrich M. T., Tamassia R., Goldwasser M. H. (2013), Data Structures and Algorithms in Python, Wiley
- Canning, J., Broder, A., Lafore, R. (2023). Data Structures & Algorithms in Python (First Edition). Boston: Pearson. ISBN 978-013-485-568-4
- Bradley N. Miller, David L. Ranum Milner (2013). Problem solving with algorithms and data structures using Python (disponível em https://runestone.academy/runestone/books/published/pythonds/index.html)
Método de Avaliação
De acordo com Métodos de Ensino - 100 %