Skip to main content

Applied Programming II

Credits
6
Types
Compulsory
Requirements
This subject has not requirements , but it has got previous capacities
Department
CS

Teachers

Person in charge

Weekly hours

Theory
2
Problems
2
Laboratory
0
Guided learning
0
Autonomous learning
6

Competences

Knowledge

  • 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

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

    Contents

    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.

    Activities

    Activity Evaluation act


    Introduction


    Objectives: 1
    Contents:
    Theory
    4h
    Problems
    4h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    7.5h

    Recursion


    Objectives: 2
    Contents:
    Theory
    6h
    Problems
    6h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    22.5h

    Object-oriented programming


    Objectives: 1 2
    Contents:
    Theory
    4h
    Problems
    6h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    15h

    Algorithm analysis


    Objectives: 3
    Contents:
    Theory
    4h
    Problems
    4h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    15h

    Divide and conquer


    Objectives: 1 2
    Contents:
    Theory
    2h
    Problems
    4h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    7.5h

    Dynamic programming


    Objectives: 1 2
    Contents:
    Theory
    6h
    Problems
    6h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    22.5h

    Mid-term exam



    Week: 7 (Outside class hours)
    Theory
    0h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    0h

    Final exam



    Week: 14 (Outside class hours)
    Theory
    0h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    0h

    Teaching methodology

    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.

    Bibliography

    Basic

    Complementary