Pasar al contenido principal

Programación Aplicada II

Créditos
6
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos , pero tiene capacidades previas
Departamento
CS

Profesorado

Responsable

Horas semanales

Teoría
2
Problemas
2
Laboratorio
0
Aprendizaje dirigido
0
Aprendizaje autónomo
6

Competencias

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

    1. Understand iterative algorithms and their implementation in a modern programming language, and apply them to solve problems.
      Competencias relacionadas: C6, K3, K4, S7, S8,
    2. Understand recursive algorithms and their implementation in a modern programming language, and apply them to solve problems.
      Competencias relacionadas: C6, K3, K4, S7, S8,
    3. Compare solutions regarding time and memory use and choose the most appropriate solution.
      Competencias relacionadas: C6, K3, K4, S7, S8,

    Contenidos

    1. Introduction
      Introduction. Recapitulation of Applied Programming 1. Introduction to Python. Functions, scoping, and abstraction. Structured types and mutability.
    2. Recursion
      Recursion. Recursive design. Simple recursion. Multiple recursion. Tail recursion. Tail recursion elimination. Examples.
    3. Object-oriented programming
      Introduction to object-oriented programming. Abstract data types, classes, and methods. Encapsulation, inheritance, shadowing. Examples.
    4. 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.
    5. Divide and conquer
      Divide and conquer. Principles: partition into subproblems, recombination of solutions. Examples.
    6. 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:
    Teoría
    4h
    Problemas
    4h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    7.5h

    Recursion


    Objetivos: 2
    Contenidos:
    Teoría
    6h
    Problemas
    6h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    22.5h

    Object-oriented programming


    Objetivos: 1 2
    Contenidos:
    Teoría
    4h
    Problemas
    6h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    15h

    Algorithm analysis


    Objetivos: 3
    Contenidos:
    Teoría
    4h
    Problemas
    4h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    15h

    Divide and conquer


    Objetivos: 1 2
    Contenidos:
    Teoría
    2h
    Problemas
    4h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    7.5h

    Dynamic programming


    Objetivos: 1 2
    Contenidos:
    Teoría
    6h
    Problemas
    6h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    22.5h

    Mid-term exam



    Semana: 7 (Fuera de horario lectivo)
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    Final exam



    Semana: 14 (Fuera de horario lectivo)
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    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ásico

    Complementario