Algorithms and data structures

« Return

Objectives

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.

Program

  1. Introduction to the study of the efficiency of algorithms: criteria for evaluating the efficiency of an algorithm; Big-O notation.
  2. Abstract Data Types (ADT): stacks, queues, lists, binary trees, graphs and dictionaries.
  3. Static and dynamic implementations of ADTs.
  4. Searching algorithms: sequential, binary, with binary trees, with hashing tables, shortest path in graphs.
  5. Sorting algorithms: insertion, selection, bubble sort, shellsort, mergesort, quicksort, radix sort, heapsort.

Teaching Methodologies

The theoretical classes are expository in which the basic concepts of programming are presented using examples and demonstrations, using the Python language.

The laboratory practical classes work articulated with the theoretical classes and are filled with the exposition and solving of problems, of small and medium scale, with algorithmic solutions, using the Python language.

Students develop a project that is the unifying element of the contents learned throughout the course, which allows them to analyze, design and implement small programs in a situation closer to reality and acquire autonomous and teamwork skills.

UAc's e-Learning Moodle platform (at http://moodle.uac.pt) is used as a repository of pedagogical and didactic material to support learning, as well as a platform for scheduling, disseminating and promoting complementary activities and management of the assessment elements.

Bibliography

Essential

  • 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

Complementary

  • 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)

Code

01060934

ECTS Credits

6

Classes

  • Práticas e Laboratórios - 30 hours
  • Teóricas - 30 hours