Créditos
7.5
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos
, pero tiene capacidades previas
Departamento
CS
Web
http://www.cs.upc.edu/~jordicf/Teaching/AP2
Profesorado
Responsable
- Jordi Cortadella Fortuny ( jordi.cortadella@upc.edu )
Otros
- Jordi Petit Silvestre ( jpetit@cs.upc.edu )
- Pau Fernandez Duran ( pau.fernandez@upc.edu )
Horas semanales
Teoría
3
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
7.5
Competencias
Competencias técnicas
Transversales
Básicas
Genéricas
Objetivos
Contenidos
-
Tipos Abstractos de Datos.
Especificación e implementación. Abstracción, descomposición funcional y por datos, ocultación y encapsulación de la información. Lenguajes orientados a objetos: clases y objetos, métodos privados y públicos, constructores y destructores. Genericidad. Ejemplos: punto, rectángulo, números racionales. -
Análisis de algoritmos.
Coste en tiempo y espacio. Caso peor, mejor y medio. Notación asintótica. Análisis del coste de algoritmos iterativos y recursivos. Ejemplos: ordenación por inserción y selección, subsecuencia de suma máxima, envolvente convexa. -
Dividir y vencer.
Principios: partición en subproblemas, recombinación de soluciones. Teorema Master. Ejemplos: búsqueda binaria, ordenación por fusión, ordenación y selección rápidas, cálculo de los dos puntos más cercanos en un plano. Transformada rápida de Fourier (FFT). -
Gestión de memoria.
Representación de los datos en memoria. Punteros y referencias. Gestión dinámica de memoria (clase vector). Estructura de la memoria de un programa (código, pila, heap). -
Contenedores básicos.
Operaciones, usos e implementaciones de pilas, colas, colas de prioridades y listas. -
Grafos.
Representaciones: matrices de adyacencia, listas de adyacencia y representación implícita. Búsqueda en profundidad (DFS). Búsqueda en anchura (BFS). Ordenación topológica. Algoritmos por caminos mínimos (Dijsktra, Bellman-Ford). Algoritmos para árboles de expansión mínimos (Prim y Kruskal). Algoritmos para flujos máximos (Ford-Fulkerson). -
Conjuntos y diccionarios.
Árboles y su representación. Árboles binarios y recorridos (pre-orden, post-orden, in-orden y por niveles). Árboles de búsqueda binarios y árboles balanceados: operaciones e implementación. Tablas de dispersión.
Actividades
Actividad Acto evaluativo
Teoría
5h
Problemas
0h
Laboratorio
3h
Aprendizaje dirigido
0h
Aprendizaje autónomo
9h
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Examen final (sobre papel)
Semana: 15 (Fuera de horario lectivo)
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Examen final (sobre ordenador)
Semana: 15 (Fuera de horario lectivo)
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Entrega de la práctica
Semana: 15 (Fuera de horario lectivo)
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Teoría
5h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h
Teoría
7h
Problemas
0h
Laboratorio
5h
Aprendizaje dirigido
0h
Aprendizaje autónomo
20h
Teoría
3h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
7.5h
Teoría
7h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
16h
Teoría
9h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
21h
Teoría
7h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
16h
Metodología docente
El temario se expone de forma muy práctica, a través de la presentación de muchos ejemplos.Las clases de teoría introducen todos los conceptos y técnicas necesarios, los cuales se ponen en práctica en las clases de problemas y de laboratorio mediante una colección de problemas y ejercicios en un juez automático.
Cada semana se hacen dos horas de clase de teoría, una hora de problemas y dos horas de laboratorio.
El curso utiliza los lenguajes de programación C++ y Python.
Método de evaluación
La nota final de la asignatura tiene en cuenta los siguientes actos de evaluación:* P1: proyecto de programación individual a entregar a mediados de curso
* P2: proyecto de programación en pareja a entregar a final de curso
* PL: examen parcial de laboratorio (con ordenador)
* FL: examen final de laboratorio (con ordenador)
* FT: examen final de teoría (con papel)
La nota de proyectos se calcula como: P = (P1 + P2)/2
La nota de exámenes se calcula como: X = max (0.3 PL + 0.4 FT + 0.3 FL, 0.5 FT + 0.5 FL)
La nota final N se calcula como:
* N = max(0.3 P + 0.7 X, 0.15 P + 0.85 X), si X >= 4
* N = 0.15 P + 0.85 X, si X < 4
Los alumnos que suspendan la asignatura podrán hacer los exámenes de reevaluación RL (laboratorio) y RT (teoría). Las nota de estos exámenes sustituirán FL y FT, respectivamente, en la fórmula de cálculo de la nota final.
Bibliografía
Básico
-
Algorithmics and Programming II (lecture notes in English)
- Cortadella, Jordi; Petit, Jordi,
UPC,
2021.
-
Data structures and algorithm analysis in C++
- Weiss, Mark Allen,
Pearson,
2014.
ISBN: 9780273769385
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004000539706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Algorithms
- Dasgupta, Sanjoy.; Papadimitriou, Christos; Vazirani, Umesh,
Mc Graw Hill Higher Education,
2008.
ISBN: 9780073523408
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003202339706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Introduction to algorithms
- Cormen, T.H. [et al.],
MIT Press,
2022.
ISBN: 9780262046305
-
Fundamentos de algoritmia
- Brassard, Gilles.; Bratley, Paul,
Prentice Hall,
1997.
ISBN: 9788489660007
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001484479706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Complementario
-
Introduction to algorithms: a creative approach
- Manber, Udi,
Addison-Wesley,
1989.
ISBN: 9780201120370
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991000704999706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Algorithms in C++
- Sedgewick, Robert,
Addison-Wesley,
1998-2002.
ISBN: 9780201350883
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002417629706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Algorithms illuminated. Part 1: The Basics
- Roughgarden, Tim,
Soundlikeyourself Publishing,
2017-2020.
ISBN: 9780999282908
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004186919706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Algorithms illuminated. Part 2: Graph Algorithms and Data Structures
- Roughgarden, Tim,
Soundlikeyourself Publishing,
2017-2020.
ISBN: 9780999282922
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004186919706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Algorithms illuminated. Part 3: Greedy Algorithms and Dynamic Programming
- Roughgarden, Tim,
Soundlikeyourself Publishing,
2017-2020.
ISBN: 9780999282946
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004186919706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Web links
- Pàgina principal del curs. http://www.cs.upc.edu/~jordicf/Teaching/AP2
- Jutge.org https://jutge.org