Crèdits
6
Tipus
Obligatòria d'especialitat (Computació)
Departament
CS;BSC;ENTEL
Mail
alg@cs.upc.edu
Professorat
Responsable
- Maria Jose Serna Iglesias ( mjserna@cs.upc.edu )
Altres
- Amalia Duch Brown ( duch@cs.upc.edu )
- Conrado Martínez Parra ( conrado@cs.upc.edu )
- Maria Josep Blesa Aguilera ( mjblesa@cs.upc.edu )
- Santiago Marco Sola ( santiago.marco@upc.edu )
Hores setmanals
Teoria
2
Problemes
2
Laboratori
0
Aprenentatge dirigit
0.4
Aprenentatge autònom
5.6
Competències
Competències tècniques comunes
- CT1.2C - Interpretar, seleccionar i valorar conceptes, teories, usos i desenvolupaments tecnològics relacionats amb la informàtica i la seva aplicació a partir dels fonaments matemàtics, estadístics i físics necessaris. CEFB3. Capacitat per a comprendre i dominar els conceptes bàsics de matemàtica discreta, lògica, algorísmica i complexitat computacional, i la seva aplicació per al tractament automàtic de la informació mitjançant sistemes computacionals i la seva aplicació per a la resolució de problemes propis de l'enginyeria.
- CT4.1 - Identificar les solucions algorísmiques més adequades per a resoldre problemes de dificultat mitjana.
- CT4.2 - Raonar sobre la correcció i l'eficiència d'una solució algorísmica.
- CT5.2 - Conèixer, dissenyar i utilitzar de forma eficient els tipus i les estructures de dades més adients per a la resolució d'un problema.
Aprenentatge autònom
- G7.3 - Aprenentatge autònom: capacitat de planificació i organització del treball personal. Aplicar els coneixements adquirits a la realització d'una tasca en funció de la pertinença i de la importància, decidir la manera de dur-la a terme i el temps que se li ha de dedicar, i seleccionar les fonts d'informació més adients. Identificar la importància d'establir i mantenir contactes amb els companys d'estudis, amb el professorat i amb els professionals (networking). Identificar fòrums d'informació sobre enginyeria TIC, els seus avenços i el seu impacte en la societat (IEEE, associacions, etc.).
Especialitat computació
- CCO1.1 - Avaluar la complexitat computacional d'un problema, conèixer estratègies algorísmiques que puguin dur a la seva resolució, i recomanar, desenvolupar i implementar la que garanteixi el millor rendiment d'acord amb els requisits establerts.
- CCO2.5 - Implementar software de cerca d'informació (information retrieval).
- CCO3.1 - Implementar codi crític seguint criteris de temps d'execució, eficiència i seguretat.
- CCO3.2 - Programar considerant l'arquitectura hardware, tant en asemblador com en alt nivell.
Objectius
-
Conèixer l'esquema dels algorismes golafres, identificar quan es pot aplicar i com, conèixer les tècniques més habituals per a demostrar la seva correctesa i familiaritzar-se amb alguns algorismes golafres fonamentals, p.e., els algorismes de Dijkstra, de Kruskal i de Prim.
Competències relacionades: CT1.2C, CCO1.1, CT4.1, CT4.2, CT5.2, G7.3, -
Conèixer l'esquema de programació dinàmica, identificar quan es pot aplicar i com i familiaritzar-se amb alguns algorismes de programació dinàmica fonamentals, p.e., l'algorisme de Floyd o el càlcul de la distància d'edició
Competències relacionades: CT1.2C, CCO1.1, CT4.1, CT4.2, CT5.2, G7.3, -
Conèixer el problema bàsic de càlcul de fluxos òptims sobre xarxes, familiaritzar-se amb un algorisme bàsic (Ford-Fulkerson), entendre el teorema de maxflow-mincut, reconèixer quan un problema es pot formular en termes d'un problema de fluxos
Competències relacionades: CT1.2C, CCO1.1, CT4.1, CT4.2, G7.3, -
Comprendre la importància de l'aleatorització en el disseny d'algorismes i estructures de dades, familiaritzar-se amb algunes tècniques elementals d'anàlisi probabilístic necessàries per estudiar l'eficiència dels algorismes al.leatoritzats i familiaritzar-se amb alguns exemples clàssics.
Competències relacionades: CT1.2C, CCO1.1, CT4.1, CT4.2, G7.3, -
Conèixer alguns problemes computacionals específics que sorgeixen en àmbits tant dispars com la cerca en bases de dades documentals, bases de dades proteíniques i genòmiques, sistemes de informació geogràfica, recuperació d'informació basada en el contingut, compressió de dades, etc. i conèixer algunes estructures de dades avançades per a donar resposta a aquestes necessitats
Competències relacionades: CT1.2C, CCO2.5, CCO1.1, CT4.1, CT4.2, CT5.2, CCO3.1, G7.3, -
Familiaritzar-se amb l'ús dels principis de disseny algorísmic pel disseny d'estructures de dades i conèixer algunes tècniques essencials per a obtenir implementacions d'aquestes que garanteixin la màxima eficiència i treguin partit de les caracterísitques específiques del hardware que ha de suportar aquestes estructures de dades
Competències relacionades: CT1.2C, CCO1.1, CT4.1, CT4.2, CT5.2, CCO3.1, CCO3.2, G7.3, -
Desenvolupar els hàbits, actituds i habilitats necessàries per a poder estudiar, de manera independent o en equip, un tema específic, fent-ne ús de les fonts d'informació disponibles (bibliografia, Web, ...) i aconseguir el nivell de coneixement i compresió del tema suficient com per a poder explicar-ho a tercers, escrivint un resum i preparant un material audiovisual complementari
Competències relacionades: G7.3,
Continguts
-
Conceptes Algorísmics Bàsics
Anàlisi del cas pitjor. Notació asimptòtica. Dividir per conquerir. Anàlisi d'algorismes recursius. Ordenació lineal. Algoritmes per Grafs. Aleatorització. -
Algorismes Golafres
Esquema dels algorismes golafres. Planificació de tasques. Algorismes de Bellman-Ford i Johnson per als camins mínims. Algorismes de Kruskal i Prim per a arbres d'expansió mínims. Particions (Union-find). Codis de Huffman. -
Programació Dinàmica
Principi d'optimalitat. Memoització. Algorisme de Floyd-Warshall per a camins mínims. Problema del viatjant de comerç. Problema de la motxilla. Altres examples. -
Fluxos sobre Xarxes
Conceptes bàsics. Teorema del maxflow-mincut. Algorisme de Ford-Fulkerson. Aplicacions: matching i camins sense arestes en comú. Dualitat. -
Estructures de Dades i Algorismes Avançats
Es farà una selecció d'algú dels algorismes i/o estructures de dades seguents (o d'altres). Programació lineal. Monticles de Fibonaccci. Hashing. Filtres de Bloom. Blockchain. Estructures de dades mètriques. Map Reduce. Grafs aleatoris. PageRank.
Activitats
Activitat Acte avaluatiu
Conceptes Algorísmics Bàsics
Recordar conceptes fonamentals apresos a les assignatures prèvies, i familiaritzar-se amb la terminologia i notació que es farà servir al llarg del curs. Aprendre altes técniques algorítmiques bàsiques.- Aprenentatge autònom: - Estudi de la teoria i problemes vistos a classe - Resolució dels exercicis proposats amb antelació
Continguts:
Teoria
4h
Problemes
4h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h
Algorismes Golafres
Atendre les classes de teoria i problemes ón es desenvolupa el tema i fer els exercicis proposats pel professor per fer a casa o a classe- Aprenentatge autònom: - Estudi de la teoria i problemes vistos a classe - Resolució dels exercicis proposats amb antelació
Continguts:
Teoria
6h
Problemes
6h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
16h
Programació Dinàmica
Atendre les classes de teoria i problemes ón es desenvolupa el tema i fer els exercicis proposats pel professor per fer a casa o a classe- Aprenentatge autònom: - Estudi de la teoria i problemes vistos a classe - Resolució dels exercicis proposats amb antelació
Continguts:
Teoria
8h
Problemes
9h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
15h
Fluxos sobre Xarxes
Atendre les classes de teoria i problemes ón es desenvolupa el tema i fer els exercicis proposats pel professor per fer a casa o a classe- Aprenentatge autònom: - Estudi de la teoria i problemes vistos a classe - Resolució dels exercicis proposats amb antelació
Continguts:
Teoria
8h
Problemes
8h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
15h
Estructures de Dades Avançades
Atendre les classes de teoria i problemes ón es desenvolupa el tema i fer els exercicis proposats pel professor per fer a casa o a classe- Aprenentatge autònom: - Estudi de la teoria i problemes vistos a classe - Resolució dels exercicis proposats amb antelació
Continguts:
Teoria
1h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
4h
Estudi d'un tema fora dels continguts del curs
A principi de curs es plantejarà un tema d'estudi aquest tema formarà part del temari de l'examen parcial.
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h
Metodologia docent
Les classes de teoria són d'estil magistral, amb exposició teòrica per part del professor, intercalades amb nombrosos exemples. S'espera que els estudiants participin activament amb les seves preguntes i comentaris al llarg d'aquestes classes. Cada setmana es faran dues hores de teoria i dues hores de problemes. A les classes de problemes es discutiran les solucions proposades pels estudiants d'exercicis plantejats pel professor amb antelació (enunciats més complexos, amb els quals l'estudiant ha pogut treballar durant una setmana, autònomament) o d'exercicis curts plantejats durant la mateixa classe per a ser treballats en equips de dos-quatre estudiants o individualment. Els estudiants podran ser requerits a exposar les seves solucions a la resta dels companys. Al llarg del curs caldrà lliurar la solució escrita de 3-4 dels problemes plantejats i corregir algunes de les solucions lliurades per altres estudiants.Per tal de poder avaluar la competència de aprenentatge autònom, es requereix l'estudi d'un tema concret, relacionat amb els que es veuen al llarg del curs, però no exposat a classe de teoria. Aquest tema es proposarà al començament del curs i s'avaluarà dintre de l'examen parcial.
Mètode d'avaluació
La nota final es calcula a partir de la nota de la resolució de problemes algorísmics (A); la nota associada als lliuraments i correccions de problemes (E); la de les proves escrites: parcial (M), matèria corresponent a les 6-7 primeres setmanes del curs i el tema associat a l'aprenentatge autònom, i l'examen final (F), tota la matèria.La nota final es calcula com: 0.75 max(0.5 M + 0.5 F, F) + 0.15 E + 0.1 A
El professorat avaluarà el grau d'adquisició de la competència d'aprenentatge autònom a partir de la nota obtinguda en una de les preguntes del parcial, que contribuirà amb 1 punt a la nota del parcial. La nota qualitativa de la competència transversal es determina a partir de la nota numèrica obtinguda per l'alumne per trams: [0,0.25) => D, [0.25,0.5) => C, [0.5,0.75) => B, [0.75,1] => A
Bibliografia
Bàsic
-
Algorithm design
- Kleinberg, J.; Tardos, E,
Pearson,
2014.
ISBN: 9781292023946
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004001669706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Algorithms
- Dasgupta, S.; Papadimitriou, C.; Vazirani, U,
McGraw-Hill,
2008.
ISBN: 9780073523408
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003202339706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
The Nature of computation
- Moore, C.; Mertens, S,
Oxford University press,
2011.
ISBN: 9780199233212
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003877749706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Complementari
-
Fundamentals of algorithmics
- Brassard, G.; Bratley, P,
Prentice-Hall International,
1996.
ISBN: 013073487X
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001368999706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
The algorithm design manual
- Skiena, S.S,
Springer,
2020.
ISBN: 9783030542559
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991005126274506711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Handbook of data structures and applications
- Mehta, D.P.; Sahni, S. (eds.),
Chapman & Hall/CRC,
2005.
ISBN: 1584884355
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002955369706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
LaTeX: a document preparation system: user's guide and reference manual
- Lamport, L,
Addison-Wesley,
1994.
ISBN: 0201529831
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001080769706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Randomized Algorithms
- Motwani, R.; Raghavan, P,
Cambridge University Press,
1995.
ISBN: 0521474655
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001320239706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Probability and computing: randomized algorithms and probabilistic analysis
- Mitzenmacher, M.; Upfal, E,
Cambridge University Press,
2005.
ISBN: 0521835402
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002835539706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Networks, crowds, and markets: reasoning about a highly connected world
- Easley, D.; Kleinberg, J,
Cambridge University Press,
2010.
ISBN: 9780521195331
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003784319706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Introduction to algorithms
- Cormen, T.H [et al.],
MIT Press,
2022.
ISBN: 9780262046305
https://research-ebsco-com.recursos.biblioteca.upc.edu/c/ik5pvi/search/details/lq2sgumirf?db=nlebk -
Algorithms
- Sedgewick, R.; Wayne, K,
Addison-Wesley,
2011.
ISBN: 9780321573513
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004156419706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Capacitats prèvies
- Familiaritat amb les tècniques bàsiques de programació i el llenguatge de programació C++: iteracions, alternatives, funcions recursives,pas de paràmetres, punters, referències, memòria dinàmica, classes, objectes, mètodes, ...
- Coneixement de conceptes algorísmics bàsics: eficiència d'algorismes, notació asimptòtica, grafs, recorreguts de grafs, estructures de dades (llistes, arbres de cerca, hash, heaps, ...)
- Coneixements bàsics de matemàtica discreta, àlgebra lineal i càlcul
- Coneixements bàsics de teoria de probabilitat i estadística
- Coneixements bàsics d'arquitectura de computadors i de la jerarquia de memòria