Curricular Unit:Code:
Algorithms and Data Structures I831AED1
Year:Level:Course:Credits:
2UndergraduateComputer Systems Engineering6 ects
Learning Period:Language of Instruction:Total Hours:
Winter SemesterPortuguese/English78
Learning Outcomes of the Curricular Unit:
Competence levels (Dublin descriptors):
1. Knowledge and understanding
1.1. Algorithm (ALG): description, implementation and analysis using several notations
1.2. Understanding ALG and data structures (ED) in software projects and solving concrete problems
2. Applying knowledge and understanding
2.1. Apply linear and generic ED as arrays and linked lists.
2.2. Apply ALG in conjunction with ED and abstract data types (TAD), such as stacks and rows.
2.3. Use the C programming language in the implementation of ALG and ED.
3. Making judgements:
3.1. Choose of appropriate ED and ALG for problem solving and / or software projects.
4. Communication:
4.1. Describe an ALG by mastering abstract representations of algorithms.
4.2. Work in a group.
4.3. Argue orally and in writing.
5. Autonomy and learning skills:
5.1. Know and deepen other existing algorithmic techniques.
5.2. Autonomy to overcome difficulties inherent to new problems
Syllabus:
1. Fundaments of Algorithms and Data Structures
1.1. Algorithm representation and programming models
1.2. Introduction to linear and nonlinear data structures
1.3. Analysis of algorithmic complexity
1.4. Introduction to Algorithmic Design Techniques
1.5. Applications and case studies
2. Text processing algorithms (Strings)
2.1. Introduction to operations with strings
2.2. Sorting operations
2.3. Search operations
3. Elementary Data Structures
3.1. Abstract Data Types (ADT)
3.2. Arrays
3.3. Linked Lists
3.4. Stacks
3.5. Queues
4. Sorting
4.1. Introduction to the sorting problem
4.2. Elementary sorting methods
4.3. Merge Sort
4.4. QuickSort
4.5. Heaps, priority queues and Heap Sort
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 are presented in the introductory chapter, in the following chapters are presented various sorting and searching algorithms and linear data structures and strings.
The learning objectives are achieved by supplementing the theoretical concepts with concrete examples and exercises run in lab environment using appropriate software
Teaching Methodologies (Including Evaluation):
Theoretical-practical (TP) and practical-laboratory (PL) components. In TP classes, concepts are presented interspersed with examples and exercises. In PL classes are posed and solved exercises and problems, eventually using software.
Final_Grade_AED1 = (2/3) x Grade_TP + (1/3) x Grade_PL
Required:
 Grade_TP> = 10
 Grade_PL> = 10
Grade_PL: compulsory for continuous evaluation and is not subject to examination. It consists of a programming project carried out during the semester. If student does not submit the project will have zero and can only carry out the project in a subsequent edition of the UC.
 Grade_PL = Practical project grade
Grade_TP:
 In continuous evaluation, two frequencies F1 and F2, Grade_TP = (50%) x F1 + (50%) x F2
 On exam, Grade_TP = Grade_TP_Examination
If only TP or PL is positive, it is valid for a maximum period of two academic years after the year in which the student has obtained approval in this component. During this period the UC is not completed (NC)
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