Requisitos
Esta asignatura no tiene requisitos
The course presents the elements of a computer programming language and the basic algorithmic foundations for working with scalar and structured data. During the course students will acquire the knowledge to deal with programming problems of small and medium complexity.
The course covers basic concepts and techniques for building programs in imperative languages.
At the end of the course, students:
1. will know the basic constituents of imperative languages: variables, types, expressions, conditionals and iterations.
2. will be able to use and design procedures (actions and functions) to encapsulate sub-problem solutions.
3. will be able to use the descending design methodology to give solutions to problems of medium difficulty.
4. will be able to use vectors and dictionaries to store structured information and as a basis for the design of data structures.
5. will know and be able to reproduce and properly use some fundamental algorithms, such as dichotomous search or elementary vector sorting algorithms.
The programming language used in this couse is Python, although the emphasis is not on learning the details of the language but on solving algorithmic problems and building structured programs.
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 how to build a program and use tools the necessary tools: console, editor and compiler.
Competencias relacionadas:
K4,
C6,
-
Understand the syntax and semantics of basic expressions and instructions in an imperative programming language (Python).
Competencias relacionadas:
K4,
C6,
-
Understand the concepts of function, procedure and parameter passing, to be able to
use functions and procedures to develop programs.
Competencias relacionadas:
K4,
C6,
-
Understand lists, dictionaries, and sets, and identify how to use the appropriately to solve problems
Competencias relacionadas:
K3,
K4,
S7,
C6,
-
Compare solutions regarding time and memory use and choose the most appropriate solutions for simple cases.
Competencias relacionadas:
K3,
S7,
S8,
C6,
-
Understand search and traversal schemas and appropriately apply them to solve problems.
Competencias relacionadas:
K3,
S7,
C6,
-
Understand binary search, and basic sort algorithms (insertion, selection, bubblesort, mergesort)
Competencias relacionadas:
K3,
S8,
C6,
Contenidos
-
Basic Programming concepts
Introduction: algorithm, program
- variable, expression,
- assignment. I/O. Conditional
- Iiterative statements.
Solving problems with scalar data
-
Iterative schemas
Traversal & Search schemas.
Invariants
-
Functions and Procedures
Function design and parameter passing.
Function design examples.
-
Lists
Representation of data structures with lists. Traversal and search algorithms on lists. Python memory management of Lists
-
Matrices
Basic algorithms on matrices: sum, symmetric, transpose, multiplication.
Python memory management of Matrices
-
Dictionaries
Memory representation of dictionaries. Hashing concept.
Mutability. Tuples.
Counters. Sets.
FrozenSets
-
Computational Complexity
Basic notions of computational complexity
-
Sort algorithms
Bubble sort
Insertion sort
Selection sort
Mergesort
sorting Python structures using lambda as key
-
Standard Python Input
readline
readlines
strip
split
Actividades
Actividad
Acto evaluativo
Basic concepts of programming
Introduction: algorithm, program, variable, expression, assignment. I/O. Conditional
Iiterative statements. Solving problems with scalar data
Objetivos:
1
2
Contenidos:
Iterative schemas
Traversal & Search problems
Invariants.
Loop design
Objetivos:
2
6
Contenidos:
Functions.
Functions: design and parameter passing. Function design examples.
Objetivos:
3
Contenidos:
Lists and Matrices
Representation of data structures with lists. Traversal and search algorithms on lists. Python memory management of Lists
Matrices. Basic algorithms on matrices: sum, symmetric, transpose, multiplication. Python memory management of Matrices
Objetivos:
4
Contenidos:
Dictionaries and Sets
Dictionaries. Memory representation. Hashing concept.
Counters. Sets. Memory representation.
FrozenSets.
Objetivos:
4
5
Contenidos:
Computational Complexity
Basic notions of computational complexity
Objetivos:
5
6
7
Contenidos:
Sort algorithms
Bubble sort
Insertion sort
Selection sort
sorting Python structures. Using lambda as key
Objetivos:
7
Contenidos:
Data Structure Design
Representing complex data.
lists of lists, lists of dictionaries, dictionaries with lists, embedded dictionaries.
dicctionaries with structured keys (tuples/frozensets)
Problem solving via appropriate data structures
Objetivos:
4
5
Contenidos:
Metodología docente
During theoretical sessions, the professor will expose programming concepts, combined with examples and problem solving.
During problem-solving sessions, students will work on their own solving problems with an online platform (El Jutge), under supervison and assistance of the professor when needed
Método de evaluación
There will be two exams. A mid-term exam and a final exam
In addition, there will be some evaluable problem tests taken during problem sessions, announced in advance.
FinalScore = 0.10*NP + 0.90*max(EF, 0.4*EP+0.6*EF)
where:
NP : Problem score. Short problem tests taken during problem sessions
EP: Partial exam score
EF: Final exam score
Students failing the course but satisfying the following conditions may opt to reevaluation:
- Have attended and delivered both EP & EF examens, plus at least 50% of the problem tests (NP)
- Have obtained an average of at least 3.5
- Reevaluation will consists of an additional exam, the grade of which will replace EF score.
Bibliografía
Básica:
Complementaria: