-
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
ULHT2531-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 and assessment
Teaching methodologies and assessment
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.
-
Office Hours
Office Hours
-
Mobility
Mobility
No