Curricular Unit: | Code: | ||

Algorithms and Data Structures II | 1093AED2 | ||

Year: | Level: | Course: | Credits: |

2 | Undergraduate | Computer Systems Engineering | 6 ects |

Learning Period: | Language of Instruction: | Total Hours: | |

Spring Semester | Portuguese/English | 78 | |

Learning Outcomes of the Curricular Unit: | |||

Upon successful completion of this course unit students should be able to (learning outcomes - LO): LO1-Understand the notion of symbol tables and their applicability LO2-master the notion of binary search trees and articulate associated algorithms LO3-Master the notion of tree balancing using red-black trees LO4-distinguish the use of hash tables, hash functions and their properties LO5-distinguish and apply the notion of graph in algorithmic modeling LO6-master and use directed graphs in various algorithmic problems LO7-apply minimum spanning tree algorithms and their properties LO8-explain and apply shortest path calculation algorithms in graphs | |||

Syllabus: | |||

1. Introduction to non-linear data structures 1.1. Introduction to trees and graphs 1.2. Notation and Terminology 1.3. Representation 1.4. Applications of non-linear data structures 2. Search and tree data structures 2.1. Symbol tables 2.2. Introduction to Tree Data Structures 2.3. Binary search trees (BST - binary search trees) 2.4. Balanced trees 2.5. Hash tables 3. Graphs 3.1. Introduction to the graph data structure and its representation 3.2. Graph traversal algorithm 3.3. Undirected graphs 3.4. Directed graphs 3.5. Weighted graphs 3.6. Weighted and directed graphs | |||

Demonstration of the Syllabus Coherence with the Curricular Unit's Objectives: | |||

The syllabus presented are consistent with the learning objectives of the curricular unit since there is a large convergence between the table of contents and the knowledge that the student is supposed to acquire in each of the program topics. The fundamental concepts of algorithmic analysis and design and nonlinear data structures are presented in the introductory chapter, in the following chapters are presented various algorithms and data structures for searching and also graph algorithms. The learning objectives are achieved by supplementing the theoretical concepts with concrete examples run in lab environment using appropriate software | |||

Teaching Methodologies (Including Evaluation): | |||

This Course Unit (UC) is classified as a Project. Includes core competences that are not subject to examination. There are elements of continuous assessment whose weighted average is required to be positive, the Practical Score of Continuous Assessment (NPAC) Possible assessment results: a) Student achieves minimum goals (NPAC >= 9.5 values) and a positive Final Grade (NF1 >=9.5 values) in continuous assessment. Approves the UC with NF1 b) Student achieves minimum goals (NPAC >= 9.5 values) and (NF1 < 9.5 values). Can be assessed on examination. Exam assessment is independent of continuous assessment. UC Final Grade is NF2 c) Student does not achieve minimum goals (NPAC < 9.5 values). Does not pass the UC and will not be able to access the exam Expected assessment elements: A1. Test 1 A2. Test 2 A3. Practical project A4. Exam Continuous Assessment Model: NPAC = A3 NF1 = (A1 + A2 + NPAC)/3, NPAC >= 9.5 Exam Assessment Model (NPAC >= 9.5): NF2 = A4 | |||

Demonstration of the Coherence between the Teaching Methodologies and the Learning Outcomes: | |||

The teaching/learning methodology applied in this curricular unit as well as its evaluation system is perfectly aligned with the objectives to be attained by the students at the end of the term. The theoretical concepts are presented, discussed, applied and evaluated in the context of lectures, which guarantees students a solid foundation to understand the challenges facing this area of knowledge. On the other hand, so that the study is not restricted to conceptual models, in the practical lessons are presented concrete case studies and implemented solutions for real problems using appropriate software. This combination guarantees training for students that allows them to meet the scientific goals, essential to a good understanding of the theme, as well as the ability to adapt to technological changes. The evaluation process consists of theoretical tests and practical work also guarantees a correct balance between the efforts dedicated to both components. The objective is to train professionals’ specialized in state-of-the-art techniques and tools but also ensure its ability to follow future developments. In this curriculum unit the problem of algorithms and data structures are presented and evaluated in theoretical component. These concepts are then applied in the resolution of the worksheets and practical work in the context of practical classes | |||

Reading: | |||

[CLRS] Thomas H. Cormen, Leiserson, C., Rivest, R., & Stein, C. (2009). Introduction to Algorithms, third edition. MIT Press. [KT] Kleinberg, J., & Tardos, E. (2006). Algorithm Design. Pearson Education. [SW] Sedgewick, R., & Wayne, K. (2011). Algorithms, 4th Edition. Pearson Education. [VSC] Vasconcelos, J., & Carvalho, J. V. de. (2005). Algoritmia e Estrutura de Dados: programação nas linguagens C e Java. Editora Centro Atlântico. [AAR2] Rocha, A. A. da. Estruturas de Dados e Algoritmos em Java. FCA - Editora de Informática, ISBN 978-972-722-704-4. [AAR1] Rocha, A. A. da. (2008). Estruturas de Dados e Algoritmos em C. FCA - Editora de Informática |