Algoritmos e Estruturas de Dados

Código

01060934

Créditos ECTS

6

Objetivos

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 em grafos.
  5. Algoritmos de ordenação: inserção direta, seleção direta, bubble sortshellsortmergesortquicksortradix sortheapsort.

Métodos de Ensino

As aulas teóricas são expositivas em que se apresentam os conceitos elementares de programação com recurso a exemplos e demonstrações, usando a linguagem Python. 

As aulas práticas laboratoriais funcionam articuladas com as aulas teóricas e são preenchidas pela exposição e resolução de problemas, de pequena e média escala, com soluções algorítmicas, usando a linguagem Python. 

Os estudantes desenvolvem um projeto 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 adquirir competências de trabalho autónomo e em equipa.

A plataforma de e-Learning Moodle da UAc (em http://moodle.uac.pt) é utilizada como repositório de material pedagógico e didático de apoio à aprendizagem, bem como de plataforma de agendamento, divulgação e promoção de atividades complementares e de gestão dos elementos de avaliação.

Bibliografia

Essencial

  • Lambert, K. A. (2013). Fundamentals of Python: Data Structures (Second Edition). Boston, USA: Cengage.
  • Costa, E. (2015). Programação em Python : Fundamentos e Resolução de Problemas. FCA

Complementar

  • Goodrich M. T., Tamassia R., Goldwasser M. H. (2013), Data Structures and Algorithms in Python, Wiley
  • 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