filmeu

Class Algorithms and Data Structures

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

  • Code

    Code

    ULHT260-13397
  • 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.

SINGLE REGISTRATION
Lisboa 2020 Portugal 2020 Small Logo EU small Logo PRR republica 150x50 Logo UE Financed Provedor do Estudante Livro de reclamaões Elogios