-
Presentation
Presentation
This CU appears in the 2nd semester of the 1st year, following the work started in Fundamentals of Programming (FP). In FP, students took the first steps in programming and were mainly focused on producing correct programs. Now, in Algorithms and Data Structures, they will continue to produce correct programs but with a special focus on their performance, both in terms of runtime execution and memory consumption. This is a fundamental CU in the curriculum of a Computer Engineer, who in his professional life will find numerous situations in which he will have to solve problems caused by poor application performance and which require a solid knowledge of the principles underlying the main algorithms and data structures.
-
Class from course
Class from course
-
Degree | Semesters | ECTS
Degree | Semesters | ECTS
Bachelor | Semestral | 6
-
Year | Nature | Language
Year | Nature | Language
1 | Mandatory | Português
-
Code
Code
ULHT260-13397
-
Prerequisites and corequisites
Prerequisites and corequisites
Not applicable
-
Professional Internship
Professional Internship
Não
-
Syllabus
Syllabus
recursive functions, recursive algorithms complex data types efficiency and optimisation (algorithmic and non-algorithmic) complexity of algorithms search algorithms sorting algorithms - bubble sort, selection sort, merge sort, quick sort - abstract data types - queues and stacks linked lists trees hash tables
-
Objectives
Objectives
This curricular unit aims to introduce the basic concepts of algorithms and basic data structures, through the perspective of solving complex problems in the most efficient possible way. The student should be able to analyze and evaluate the efficiency of a given algorithm without implementing or testing it. It should also be able to choose the most appropriate and efficient data structure to support the solution of a given problem. In practice, the student should be able to create Java applications whose efficiency is a determining success factor (ex: searching, sorting).
-
Teaching methodologies
Teaching methodologies
In the theoretical component, some classes employ the 'flipped learning' model: students watch videos that explain certain content before the theoretical class, and the theoretical class becomes a theoretical-practical session where students solve exercises related to the videos. Live coding sessions are also conducted, during which the professor projects their computer screen and develops programs in front of the students. In the practical component, an automatic code validation tool (Drop Project) is utilized, allowing students to progress through exercises relatively independently. The project follows a similar model, with unlimited attempts: students can submit as many times as they want until passing the automatic tests. The use of Language Model Models (LLMs) is permitted and even encouraged, aiming to complement the learning process. However, to prevent unproductive 'copy & prompting' behaviors, exercises are presented visually, using diagrams or videos.
-
References
References
Lafore, R. (2003) Data Structures and Algortihms in Java. 2nd edition.
-
Assessment
Assessment
Componente teórica (40% da nota final, nota mínima 9,5)
tem duas opções: avaliação contínua ou apenas uma frequência completa
- Avaliação contínua
- Frequência parte 2 (segunda metade da matéria) - 45% - nota mínima: 8 (apenas para quem passou na frequência parte 1)
- Frequência parte 1 (primeira metade da matéria) - 45% - nota mínima: 8
- 3 TPCs - 10%
- Frequência completa (toda a matéria) - 100% - nota mínima: 9,5
Componente prática (60% da nota final, nota mínima 9,5)
-
2 mini-fichas presenciais - 25%, feitas durante a aula prática, usando o Drop Project (ferramenta de validação automática de código)
- Participação - 10%, calculada a partir do número de fichas práticas submetidas dentro do prazo
- Projeto em grupos de 2, com defesa presencial - 65% (apenas serão aceites grupos de 1 aluno em situações excepcionais, devidamente justificadas)
- A defesa presencial inclui alterações no código da aplicação que cada aluno terá que fazer individualmente assim como perguntas colocadas individualmente.
- A nota da defesa presencial pode ir de 0 a 100% e é aplicada à nota do projecto
Nota: Se tiver nota mínima numa componente, essa nota é transferida para época de recurso e época especial do mesmo ano letivo.
Em época de recurso e especial, mantém-se a obrigatoriedade de aprovar na componente teórica e prática (nota mínima em cada uma é 9,5). A componente teórica é avaliada através de um exame e a componente prática é avaliada através de um projeto e respetiva defesa individual.
- Avaliação contínua
-
Mobility
Mobility
No




