Requisitos
Esta asignatura no tiene requisitos
Profesorado
Responsable
-
Alexis Molina Martinez de los Reyes (
)
-
Gabriel Valiente Feruglio (
)
Resultados de aprendizaje
Resultados de aprendizaje
Conocimientos
-
K3 - Identificar los fundamentos matemáticos, las teorías informáticas, los esquemas algorítmicos y los principios de organización de la información aplicables al modelado de sistemas biológicos y a la resolución eficiente de problemas bioinformáticos mediante el diseño de herramientas computacionales.
-
K4 - Integrar los conceptos ofrecidos por los lenguajes de programación de mayor uso en el ámbito de las Ciencias de la Vida para modelar y optimizar estructuras de datos y construir algoritmos eficientes, relacionándolos entre sí y con sus casos de aplicación.
Habilidades
-
S7 - Implementar métodos de programación y análisis de datos orientados a partir de la elaboración de hipótesis de trabajo, dentro del área de estudio.
-
S8 - Enfrentarse a la toma de decisiones, y defenderlas con argumentos, en la resolución de problemas de las áreas de biología, así como, dentro de los ámbitos adecuados, las ciencias de la salud, las ciencias de la computación y las ciencias experimentales.
Competencias
-
C6 - Detectar deficiencias en el propio conocimiento y superarlas mediante la reflexión crítica y la elección de la mejor actuación para ampliar este conocimiento.
Objetivos
-
Understand iterative algorithms and their implementation in a modern programming language, and apply them to solve problems.
Competencias relacionadas:
C6,
K3,
K4,
S7,
S8,
-
Understand recursive algorithms and their implementation in a modern programming language, and apply them to solve problems.
Competencias relacionadas:
C6,
K3,
K4,
S7,
S8,
-
Compare solutions regarding time and memory use and choose the most appropriate solution.
Competencias relacionadas:
C6,
K3,
K4,
S7,
S8,
Contenidos
-
Introduction
Introduction. Recapitulation of Applied Programming 1. Introduction to Python. Functions, scoping, and abstraction. Structured types and mutability.
-
Recursion
Recursion. Recursive design. Simple recursion. Multiple recursion. Tail recursion. Tail recursion elimination. Examples.
-
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.
-
Dynamic programming
Dynamic programming. Principles: partition into overlapping subproblems, memoization, tabulation. Top-down dynamic programming. Bottom-up dynamic programming. Examples.
Actividades
Actividad
Acto evaluativo
Introduction
Objetivos:
1
Contenidos:
Aprendizaje autónomo
7.5h
Recursion
Objetivos:
2
Contenidos:
Aprendizaje autónomo
22.5h
Object-oriented programming
Objetivos:
1
2
Contenidos:
Algorithm analysis
Objetivos:
3
Contenidos:
Divide and conquer
Objetivos:
1
2
Contenidos:
Aprendizaje autónomo
7.5h
Dynamic programming
Objetivos:
1
2
Contenidos:
Aprendizaje autónomo
22.5h
Mid-term exam
Semana:
7 (Fuera de horario lectivo)
Final exam
Semana:
14 (Fuera de horario lectivo)
Metodología docente
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.
Método de evaluación
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.
Bibliografía
Básica:
Complementaria: