Crèdits
7.5
Tipus
Obligatòria
Requisits
Aquesta assignatura no té requisits
, però té capacitats prèvies
Departament
CS
Professorat
Responsable
- Jordi Cortadella Fortuny (jordi.cortadella@upc.edu)
Altres
- Jordi Petit Silvestre (jpetit@cs.upc.edu)
- Pau Fernandez Duran (pau.fernandez@upc.edu)
Hores setmanals
Teoria
3
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
7.5
Competències
Competències tècniques
Transversals
Bàsiques
Genèriques
Objectius
Continguts
-
Tipus Abstractes de Dades.
Especificació i implementació. Abstracció, descomposició funcional i per dades, ocultació i encapsulació de la informació. Llenguatges orientats a objectes: clases i objectes, mètodes privats i públics, constructors i destructors. Genericitat. Exemples: punt, rectangle, nombres racionals. -
Anàlisi d'algorismes.
Cost en temps i espai. Cas pitjor, millor i mitjà. Notació asimptòtica. Anàlisi del cost d'algorismes iteratius i recursius. Exemples: ordenació per inserció i selecció, subseqüència de suma máxima, envolupant convexa. -
Dividir i vèncer.
Principis: partició en subproblemes, recombinació de solucions. Teorema Master. Exemples: cerca binària, ordenació per fusió, ordenació i selecció ràpides, càlcul dels dos punts més propers en un pla. Transformada ràpida de Fourier (FFT). -
Gestió de memòria.
Representació de les dades a memòria. Punters i referències. Gestió dinàmica de memòria (classe vector). Estructura de la memòria d'un programa (codi, pila, heap). -
Contenidors bàsics.
Operacions, usos i implementacions de piles, cues, cues de prioritats i llistes. -
Grafs.
Representacions: matrius d'adjacència, llistes d'adjacència i representació implícita. Cerca en profunditat (DFS). Cerca en amplada (BFS). Ordenació topològica. Algorismes per camins mínims (Dijsktra, Bellman-Ford). Algorismes per arbres d'expansió mínims (Prim i Kruskal). Algorismes per a fluxos màxims (FordFulkerson). -
Conjunts i diccionaris.
Arbres i la seva representació. Arbres binaris i recorreguts (pre-ordre, post-ordre, in-ordre i per nivells). Arbres de cerca binaris i arbres balancejats: operacions i implementació. Taules de dispersió.
Activitats
Activitat Acte avaluatiu
Teoria
5h
Problemes
0h
Laboratori
3h
Aprenentatge dirigit
0h
Aprenentatge autònom
9h
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h
Examen final (sobre paper)
Setmana: 15 (Fora d'horari lectiu)
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h
Examen final (amb ordinador)
Setmana: 15 (Fora d'horari lectiu)
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h
Lliurament pràctica
Setmana: 15 (Fora d'horari lectiu)
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h
Teoria
5h
Problemes
0h
Laboratori
4h
Aprenentatge dirigit
0h
Aprenentatge autònom
12h
Teoria
7h
Problemes
0h
Laboratori
5h
Aprenentatge dirigit
0h
Aprenentatge autònom
20h
Teoria
3h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
7.5h
Teoria
7h
Problemes
0h
Laboratori
4h
Aprenentatge dirigit
0h
Aprenentatge autònom
16h
Teoria
9h
Problemes
0h
Laboratori
4h
Aprenentatge dirigit
0h
Aprenentatge autònom
21h
Teoria
7h
Problemes
0h
Laboratori
4h
Aprenentatge dirigit
0h
Aprenentatge autònom
16h
Metodologia docent
El temari s'exposa de forma molt pràctica, a través de la presentació de molts exemples.Les classes de teoria introdueixen tots els conceptes i tècniques necessaris, els quals es posen en pràctica en les classes de problemes i de laboratori mitjançant una col·lecció de problemes i exercicis en un jutge automàtic.
Cada setmana es fan dues hores de classes de teoria, una hora de problemes i dues hores de laboratori.
El curs utilitza els llenguatges de programació C++ i Python.
Mètode d'avaluació
La nota final de l'assignatura té en compte els següents actes avaluatoris:* P1: projecte de programació individual a entregar a mitjans de curs
* P2: projecte de programació en parella a entregar a final de curs
* PL: examen parcial de laboratori (amb ordinador)
* FL: examen final de laboratori (amb ordinador)
* FT: examen final de teoria (amb paper)
La nota de projectes es calcula com: P = (P1 + P2)/2
La nota d'exàmens es calcula com: X = max (0.3 PL + 0.4 FT + 0.3 FL, 0.5 FT + 0.5 FL)
La nota final N es calcula com:
* 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
Els alumnes que suspenen l'assignatura poden anar als exàmens de reavaluació RL (laboratori) i RT (teoria). Les notes d'aquests exàmens substituiran FL i FT, respectivament, en la fórmula de càlcul de la nota final.
Bibliografia
Bàsic
-
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
Complementari
-
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