K3 - Identify the mathematical foundations, computational theories, algorithmic schemes and information organization principles applicable to the modeling of biological systems and to the efficient solution of bioinformatics problems through the design of computational tools.
K4 - Integrate the concepts offered by the most widely used programming languages in the field of Life Sciences to model and optimize data structures and build efficient algorithms, relating them to each other and to their application cases.
Skills
S7 - Implement programming methods and data analysis based on the development of working hypotheses within the area of study.
S8 - Make decisions, and defend them with arguments, in the resolution of problems in the areas of biology, as well as, within the appropriate fields, health sciences, computer sciences and experimental sciences.
Competences
C6 - Detect deficiencies in the own knowledge and overcome them through critical reflection and the choice of the best action to expand this knowledge.
Objectives
Understand iterative algorithms and their implementation in a modern programming language, and apply them to solve problems.
Related competences:
K3,
K4,
S7,
S8,
C6,
Understand recursive algorithms and their implementation in a modern programming language, and apply them to solve problems.
Related competences:
K3,
K4,
S7,
S8,
C6,
Compare solutions regarding time and memory use and choose the most appropriate solution.
Related competences:
K3,
K4,
S7,
S8,
C6,
Contents
Introduction
Introduction. Recapitulation of Applied Programming 1. Introduction to Python. Functions, scoping, and abstraction. Structured types and mutability.
Object-oriented programming
Introduction to object-oriented programming. Abstract data types, classes, and methods. Encapsulation, inheritance, shadowing. Examples.
Algorithm analysis
Algorithm analysis. Cost in time and space. Worst, best, and average case. Asymptotic notation. Analysis of the cost of iterative algorithms. Analysis of the cost of recursive algorithms. Recurrences. Solution methods. Examples.
Divide and conquer
Divide and conquer. Principles: partition into subproblems, recombination of solutions. Examples.
In the theoretical sessions, the lecturer will introduce algorithmic and programming concepts, combined with examples and problem-solving. In the problem-solving sessions, students will work on their own solving problems, under supervision and assistance of the lecturer.
Evaluation methodology
There will be two exams: a mid-term exam and a final exam. The grade will be the largest of the final exam grade and the average of the mid-term grade and the final exam grade.
The students who do not pass the subject can take the reexamination exam. In this case, the final grade will be the one of this exam.