Applied Programming II

You are here

Credits
6
Types
Compulsory
Requirements
This subject has not requirements
Department
CS

Teachers

Person in charge

  • Alexis Molina Martinez de los Reyes ( )
  • Gabriel Valiente Feruglio ( )

Weekly hours

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

Learning Outcomes

Learning Outcomes

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
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
0h

Final exam



Week: 14 (Outside class hours)
Theory
2h
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: