Publication in the Diário da República: Despacho n.º 8644/2020 - 08/09/2020
5 ECTS; 2º Ano, 1º Semestre, 28,0 PL + 28,0 TP , Cód. 911912.
Lecturer
- Paulo Alexandre Gomes dos Santos (1)(2)
(1) Lead Professor
(2) Teaching Professor
Prerequisites
Not applicable.
Objectives
1. Describe the most common data structures and algorithms, as well as their advantages, limitations, and applications;
2. Use data structures to solve concrete problems;
3. Design, develop, and test code to solve medium and large-scale problems;
Program
1 - Algorithm Development Techniques:
1.1 - Iterative Algorithms
1.2 - Recursive Algorithms
2 - Complexity Analysis:
2.1 - A Priori and A Posteriori Complexity Analysis
2.2 - The Big O Notation
3 - Sorting Algorithms:
3.1 - Basic Sorting Algorithms: Bubble Sort, Insertion Sort, Straight Sort
3.2 - Intermediate Sorting Algorithms: Shell Sort
3.3 - Advanced Sorting Algorithms: Merge Sort, Quick Sort
4 - Linear Data Structures:
4.1 - Stacks
4.2 - Singly Connected and Doubly Connected Lists
4.3 - FIFO, Filo, and Circular Queues
5 - Hierarchical Data Structures:
5.1 - Binary Search Trees
5.2 - Balanced Binary Search Trees (AVL)
5.4 - Heap Min and Heap Max
5.5 - Hash Tables
6 - Graphs:
6.1 - Graph Representation Methods
6.2 - Shortest Path Algorithms
6.2 - Maximum Flow Algorithms
6.3 - Minimum Spanning Tree Algorithms
Evaluation Methodology
Continuous assessment:
Two test with a minimum grade of 7.00 out of 20 and a Practical Project with a minimum grade of 10.00 out of 20, and a final (weighted) grade greater than or equal to 10 points.
Exam:
An exam, with a theoretical part, requiring a minimum grade of 7.00 out of 20, and a practical part, requiring a minimum grade of 10.00 out of 20, and a final (weighted) grade of 10 points or higher.
Bibliography
- Stein, C. e Rivest, R. e Leiserson, C. e Cormen, T. (2002). Algoritmos Teoria e Prática Tradução da 2ª Edição Americana. Brasil: Editora Campus
- Tongo, L. e Barnett, G. (2008). Data Structures and Algorithms. EUA:
Teaching Method
Lectures covering the course content. Practical laboratory sessions for problem-solving and knowledge consolidation using computers.
Software used in class
NetBeans, JUnit and Java

















