Data Structures and Algorithms
Keywords |
Classification |
Keyword |
OFICIAL |
Biomedical Engineering |
Instance: 2024/2025 - 1S
Cycles of Study/Courses
Acronym |
No. of Students |
Study Plan |
Curricular Years |
Credits UCN |
Credits ECTS |
Contact hours |
Total Time |
MEB |
4 |
Syllabus |
1 |
- |
6 |
52 |
162 |
Teaching Staff - Responsibilities
Teaching language
Suitable for English-speaking students
Objectives
The main objectives of this course are:
1) to complement the knowledge of computer programming acquired in the course Introduction to Scientific Programming, using the Python language for program development;
2) to transmit fundamental concepts about data structures, design and analysis of algorithms, providing students with the ability to apply the referred programming paradigm to develop programs in which the data structures and algorithms available in libraries, as well as abstractions developed by themselves
Learning outcomes and competences
The students who successfully complete this curricular unit must be able to:
- to identify the main concepts of procedural and object-oriented programming;
- to describe typical applications of the studied data structures and algorithms and to select/create data structures and algorithms to solve low/medium complexity problems;
- to solve programming problems using the Python programming language and the abstractions from available libraries, implementing their own data structures and algorithms whenever necessary.
Working method
Presencial
Pre-requirements (prior knowledge) and co-requirements (common knowledge)
Attendance to the Introduction to Scientific Programming course, with approval, is recommended.
Program
Introduction to the Python language and object-oriented programming
- Fundamental programming concepts: simple data types; variables, expressions and declarations; program flow, conditionals, iteration; functions, parameter passing, recursion; files.
- Composite data types: strings, tuples, sets, lists, dictionaries.
- List comprehensions.
- Problem-solving strategies.
- Programming, testing and debugging tools.
- Fundamental concepts of classes.
- Simple inheritance in classes.
Introduction to data structures and algorithms
- Analysis of the complexity of algorithms.
- Search and sorting algorithms.
- Linear data structures (lists, queues and stacks).
- Binary Trees, Heaps, Hash Tables and Graphs.
Mandatory literature
Brad Miller;
How to think like a computer scientist ((Freely available online))
Complementary Bibliography
Steven F. Lott;
Building skills in Python
Allen B. Downey;
Think Python. ISBN: 978-1-449-33072-9
Teaching methods and learning activities
- Theoretical-practical classes: will be based on the oral presentation of the themes, accompanied by problem solutions and discussions, and the presentation of good programming practices.- Practical classes: will be based on the development of computer programs in Python to solve the proposed exercises and on the partial development of small programming projects.
-Self-learning: study of the program subjects, using the bibliography and the material provided on Moodle, resolution of exercises and development of the projects started in the labs.
Software
Ambiente de desenvolvimento em Python
keywords
Physical sciences > Computer science > Programming
Evaluation Type
Distributed evaluation with final exam
Assessment Components
Designation |
Weight (%) |
Exame |
60,00 |
Trabalho prático ou de projeto |
40,00 |
Total: |
100,00 |
Amount of time allocated to each course unit
Designation |
Time (hours) |
Estudo autónomo |
80,00 |
Frequência das aulas |
52,00 |
Elaboração de projeto |
30,00 |
Total: |
162,00 |
Eligibility for exams
To attend the classes, as specified in the general rules, and to achieve a minimum grade of 40% in the distributed component . Students who have attained the minimum required grading in the distributed evaluation component in the previous occurrence of this course may keep the obtained grading; in this case they must inform the teacher, during the first week of the course, and they should not register for the practical classes.
Calculation formula of final grade
The final grade is given by: cFINAL = 0,4 * cDIST + 0.6 * cEXAM, where cDIST and cEXAM represent, respectively, the distributed component grade and the exam grade. The result of the distributed component will be calculated on the basis of the grade obtained in a practical assignment to be done during the semester and to be submitted by the end of the semester. The exam will be done with "open book/notes". To be approved, students have to achieve a minimum grade of 40% in cDIST and cEXAM components.
The final mark cannot exceed by more than 4 points the mark of the final exam rounded to the nearest integer.
Special assessment (TE, DA, ...)
Students with a special status will be assessed in the same way as ordinary students. They should to do all the projects and deliver them on the dates scheduled for regular students. Final exam is also mandatory.
Classification improvement
Students can only improve the mark of the distributed assessment component in the following year. Students can improve the mark of the written exam at the corresponding seasons (according to the rules). The improvement of only one of the components will imply maintaining the classification previously obtained in the other component, being applied the formula previously presented for the calculation of the final grade.