Crèdits
6
Tipus
Obligatòria
Requisits
Aquesta assignatura no té requisits
, però té capacitats prèvies
Departament
CS
Professorat
Responsable
- Jordi Delgado Pin (jdelgado@cs.upc.edu)
Altres
- Caroline König (caroline.leonore.konig@upc.edu)
- Jose Luis Balcázar Navarro (jose.luis.balcazar@upc.edu)
Hores setmanals
Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
6
Competències
Transversals
Específiques
Genèriques
Objectius
-
Conèixer estructures de dades noves: Piles, Cues, Llistes, Arbres i Grafs i els algorismes associats a les operacions necessàries sobre aquestes estructures.
Competències relacionades: CT6, CE03, CE04, CE12, CG2, CG4, -
Conèixer diferentes implementacions d'estructures de dades: Implementacions fent servir estructures de dades més simples proporcionades pel llenguatge de programació, i implementacions dinàmiques.
Competències relacionades: CE03, CE04, CE12, CG2, CG4, CE02, -
Conèixer els principis bàsics de l'orientació a objectes: Conceptes de classe, instància, mètode, herència (simple i múltiple), etc.
Competències relacionades: CT6, CE03, CE04, CE10, CG2, CG4, -
Ampliació de Complexitat Computacional: Big O, Big Omega, Master Theorems
Competències relacionades: CT6, CE02, CE12, CE13, CG2, CG4, -
Resoldre en grup un problema de mida petita-mitjana aplicant allò aprés sobre orientació a objectes
Competències relacionades: CT4, CE03, CE04, CE10, CG2, CG4, CG8,
Continguts
-
Arbres i Grafs
Començarem el curs utilitzant les estructures de dades que el llenguatge de programació ens proporciona per implementar els Arbres i els Grafs. Veurem algorismes de recorregut per a les dues estructures, i d'altres algorismes importants relacionats amb aquestes, com per exemple l'algorisme de Dijkstra. -
Objectes i Classes
S'introdueixen els conceptes fonamentals d'orientació a objectes: Classe, objecte, instància, delegació, herència, etc i altres particularitats de la implementació de l'orientació a objectes pròpies del llenguatge de programació amb que treballem. -
Estructures dinàmiques de dades
S'estudia com implementar estructures de dades conegudes utilitzant el concepte de referència a un objecte. Es re-implementaran d'aquesta manera estrucures de dades que el llenguatge de programació proporciona per defecte, i estructures de dades noves que ja hem vist implementades de manera més senzilla. -
Conjunts i Diccionaris: Implementació
Veurem diferentes maneres d'implementar conjunts i diccionaris: Taules Hash i arbres binaris de cerca (BSTs). S'estudiaran les propietats d'aquestes estructures, els avantatges i inconvenients. -
Ampliació de Complexitat Algorísmica
A PA1 es va començar a veure el concepte de complexitat d'un programa, un algorisme i un problema, i vam introduir la notació asimptòtica, concretament la definició de Theta(f). Aquest tema vol ser una continuació, on veurem la Big O, la Big Omega, etc, i els Master Theorems.
Activitats
Activitat Acte avaluatiu
Ampliació de Complexitat Algorísmica
Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats.Objectius: 4
Continguts:
Teoria
6h
Problemes
0h
Laboratori
6h
Aprenentatge dirigit
0h
Aprenentatge autònom
8h
Metodologia docent
La docència de l'assignatura està estructurada en classes de teoria i classes de laboratori.A les classes de teoria els professors presenten els continguts essencials de l'assignatura. A les classes de laboratori es practiquen els continguts de l'assignatura (els presentats a classe i els adquirits autònomament) mitjançant la realització de problemes pràctics. Les classes de laboratori seran una continuació de les classes teòriques, on els conceptes nous s'implementaran a mida que vagin apareixent.
Mètode d'avaluació
El mètode d'avaluació de l'assignatura consistirà en dues proves de caire teòric (T1 i T2), una a mitjans de curs i l'altre al final i una pràctica de mida petita-mitjana (Practica).Aleshores, el mètode d'avaluació seria:
0.8 * Teoria + 0.2 * Practica
on:
Teoria: MAX(T2, 0.5 * T1 + 0.5 * T2)
Reavaluació: només es poden presentar a la reavaluació aquelles persones que, havent-se presentat a l'examen final, hagin suspès la teoria. La nota màxima que es pot obtenir a la reavaluació és un 7.
Competència transversal "Treball en equip":
S'avalua usant una rúbrica simple en que el tutor de cada grup puntua els
diferents aspectes del treball en equip de cada membre dels grups.
Bibliografia
Bàsic
-
Composing programs
- DeNero, John,
-
Structure and interpretation of computer programs
- Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie,
MIT Press [etc.],
1996.
ISBN: 9780262011532
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002456139706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Data structures and algorithms with Python
- Lee, Kent D; Hubbard, Steve,
Springer,
2014.
ISBN: 9783319130712
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004152009706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Complementari
-
Python pocket reference
- Lutz, Mark,
O'Reilly Media,
2014.
ISBN: 9781449356941
Web links
- Aquest és el text PRINCIPAL de l'assignatura, la font d'informació primària per a tot allò que expliquem a classe. Tot i això, a PA2 hi ha temes que no apareixen en aquest text. http://composingprograms.com/
- La principal referència del llenguatge de programació que fem servir: Python. No és un lloc on aprendre a programar, és un lloc on consultar detalls de les construccions i llibreries del llenguatge https://docs.python.org/3/reference/index.html