Créditos
6
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos
, pero tiene capacidades previas
Departamento
CS
Mail
caroline.leonore.konig@upc.edu
Profesorado
Responsable
- Caroline König ( caroline.leonore.konig@upc.edu )
Horas semanales
Teoría
2
Problemas
1
Laboratorio
1
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Conocimientos
Habilidades
Competencias
Objetivos
-
Conocer las estructuras de datos clave utilizadas en la computación bioinformática.
Competencias relacionadas: K3, K4, S7, S8, C6,
Subcompetences- Conocer problemas relevantes en la computación bioinformática que se resuelven apoyándose en estructuras de datos específicas.
-
Comprender el diseño y la implementación de estructuras de datos básicas para una gestión de datos eficiente en algoritmos avanzados.
Competencias relacionadas: K3, K4, S7, S8, C6,
Subcompetences- Conocer, comprender, diseñar estructura de datos para implementar diccionarios.
- Conocer, comprender, diseñar estructura de datos para implementar colas de prioridad.
- Conocer, comprender, diseñar estructuras de datos para implementar árboles.
- Conocer, comprender, diseñar estructura de datos para implementar pilas y colas.
-
Conocimiento sobre algoritmos que resuelvan problemas clásicos en grafos.
Competencias relacionadas: K3, K4, S7, S8, C6,
Subcompetences- Conocer, diseñar, comparar e implementar algoritmos de camino más corto en grafos.
- Conocer, diseñar, comparar e implementar algoritmos para ordenación topológica.
- Conocer, diseñar, comparar e implementar algoritmos de recorrido de grafos.
-
Comprender, diseñar, comparar e implementar algoritmos de string matching.
Competencias relacionadas: K3, K4, S7, S8, C6, -
Conocer, diseñar e implementar algoritmos de búsqueda exhaustivos.
Competencias relacionadas: K3, K4, S7, S8, C6,
Subcompetences- Comprender, diseñar e implementar algoritmos para explorar el espacio de búsqueda: Backtracking y Branch and Bound.
-
Analizar los límites de la computación a través del estudio de la completitud computacional.
Competencias relacionadas: K3, K4, S7, S8, C6,
Subcompetences- Comprender el Teorema de Cook-Levin como base para demostrar la NP-completitud de problemas.
- Reconocer y clasificar diversos problemas NP-completos, explorando sus dificultades y posibles aproximaciones algorítmicas para abordarlos.
Contenidos
-
Introducción a estructura de datos en bioinformatica
Introducción a las estructuras de datos clave y descripción general de su aplicación en problemas bioinformáticos relevantes. -
Algoritmos sobre arboles
Estructura de datos para arboles. Arboles binarios de búsqueda. Arboles AVL. -
Diccionarios
Implementaciones basicas: tablas y listas. Implementaciones avanzadas: tablas de dispersiçón, arboles binarios de búsqueda. -
Colas de prioridad
Operaciones con colas de prioridad. Implementación con heaps. Heapsort -
Algoritmes sobre strings
Algoritmos exactos y aproximados de string matching -
Algoritmos básicos de grafos
Representaciones: Matriz de adjacencia, lista de adjacencia. Búsqueda en profundidad, Búsqueda por anchura. Algoritmo de Dijkstra y Bellman-Ford del camino más corto. -
Algoritmos avanzados sobre grafos
Ordenación topológica, Árboles de recubrimiento mínimo, Algoritmo de Kruskal, Algoritmo de Prim -
Algoritmos de búsqueda exhaustiva
Principios: espacio de soluciones, generación de subconjuntos, permutaciones. Backtracking y Branch and Bound. -
Nociones de intratabilidad
Clase P y NP. NP-completitud y reducabilidad.
Actividades
Actividad Acto evaluativo
Teoría
2h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h
Teoría
4h
Problemas
2h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Teoría
2h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h
Teoría
2h
Problemas
2h
Laboratorio
1h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h
Teoría
3h
Problemas
2h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Teoría
4h
Problemas
2h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Teoría
2h
Problemas
1h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h
Teoría
4h
Problemas
2h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Teoría
2h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Metodología docente
Las clases teóricas presentan conceptos y técnicas fundamentales, que luego se aplican en sesiones de resolución de problemas y laboratorio mediante una colección de ejercicios evaluados por un juez automático.Las sesiones teóricas se realizan semanalmente durante dos horas, mientras que las clases de laboratorio y resolución de problemas tienen lugar cada dos semanas, también con una duración de dos horas cada una.
El curso se basa en la programación con Python.
Método de evaluación
EP = nota del examen parcial (entre 0 i 10)EF = nota del examen final (entre 0 i 10)
AC= activitades de evalucacicón continuada (problemas)
EJ= ejercicios de programación (jutge)
NOTA = 10.0%AC + 10.0%EJ+ 35.0%EP + 45.0%EF
La nota del examen de reevaluación sustituye la nota del examen parcial y del examen final.
Bibliografía
Básico
-
Introduction to algorithms
- Cormen, Thomas H; Leiserson, Charles Eric; Rivest, Ronald L; Stein, Clifford,
The MIT Press,
[2022].
ISBN: 9780262046305
https://research-ebsco-com.recursos.biblioteca.upc.edu/c/ik5pvi/search/details/lq2sgumirf?db=nlebk -
Combinatorial algorithms : generation, enumeration and search
- Kreher, Donald L; Stinson, Douglas R,
CRC Press,
cop. 1999.
ISBN: 084933988X
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001878419706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Introduction to computation and programming using Python : with application to computational modeling and understanding data
- Guttag, John V,
2021.
ISBN: 9780262542364
https://research-ebsco-com.recursos.biblioteca.upc.edu/c/ik5pvi/search/details/mlj5v5o4zf?db=nlebk
Complementario
-
Algorithms unlocked
- Cormen, Thomas H,
The MIT Press,
cop. 2013.
ISBN: 9780262313230
https://ebookcentral-proquest-com.recursos.biblioteca.upc.edu/lib/upcatalunya-ebooks/detail.action?pq-origsite=primo&docID=3339585 -
Algorithms on trees and graphs : with python code
- Valiente Feruglio, Gabriel,
Springer,
[2021].
ISBN: 9783030818845
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004916440606711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Web links
- MIT OpenCourseWare: it is a free publication of the materials of the courses of the Massachusets Institute of Technology (MIT) that shows most of the topics that are taught in MIT. Contains notes, exercises, solved exercises, exams and videos of classes. http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science
- Jutge https://jutge.org/
- Algorithms Courses on the WWW https://people.cs.pitt.edu/~kirk/algorithmcourses/index.html
- Lecture Notes K. Wayne of the course "Algorithms and Data Structures" from Princeton University https://www.cs.princeton.edu/courses/archive/fall12/cos226/lectures.php