Fundamental Data Structures and Algorithms
Cod: 21046
Department: DCET
Scientific area: Computer Engineering
Total working hours: 156
Total contact time: 26

In this course unit students are provided with advanced knowledge of data structures and algorithm design that are fundamental for problem solving. The paradigm used is general programming using C++, taking profit of its great versatility and elegance.

1. Algorithm complexity
2. Sequential containers
3. Hash trees and tables
4. Ordering

In the end, students are expected to be able of planning and implementing efficient data structures and algorithms to solve computer-based problems.

Algorithm complexity. Sequential containers: vectors, arrays, stacks and queues. Trees: binary trees, binary search trees, B-trees, red-black trees. Sorting. Associative containers: maps, sets and hashing tables.

Compulsory reading
Data Structures and Algorithms in C++, Fourth Edition, Adam Drozdek, Cengage Learning.

Complementary reading (Optional)
Not applicable.



Continuous assessment is privileged: 2 or 3 digital written documents (e-folios) during the semester (40%) and a presence-based final exam (p-folio) in the end of the semester (60%). In due time, students can alternatively choose to perform one final presence-based exam (100%).

Pré-requisitos: Conhecimentos de Programação em Linguagem C e C++ (UC 21173 Introdução à Programação e UC 21093 Programação por Objetos).

Apresentação pessoal do docente