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)
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 els conceptes més bàsics de la programació amb funcions (senzilles i d'ordre superior) i la seva utilització com a eines per adeqüar un llenguatge de programació al domini del problema que es vol resoldre
Competències relacionades: CG2, CT6, CE03, CE10, CE12, -
Conèixer el concepte de recursivitat i com distingir processos iteratius i recursius definits amb funcions recursives
Competències relacionades: CG4, CT6, CE03, CE10, CE12, -
Començar a entendre el concepte de disseny del programari
Competències relacionades: CG4, CT6, CE03, CE10, -
Poder treballar amb la idea d'error en un programa i l'utilització d'excepcions per tractar aquests errors
Competències relacionades: CG4, CE10, -
Conèixer el concepte de contenidor i les situacions en que és pertinent utilitzar-los. Conèixer el cost del seu ús (informalment)
Competències relacionades: CG4, CT6, CE02, CE04, -
Introduir l'estudiant en el càlcul de la complexitat dels algorismes
Competències relacionades: CE13, -
Involucrar l'estudiant en el disseny i implementació en grup d'un problema senzill
Competències relacionades: CG2, CG4, CG8, CT4, CE03, CE10,
Continguts
-
Construint Abstraccions amb Funcions: Funcions (senzilles i d'ordre superior). Entorns. Control del flux d'execució.
S'introdueix a l'estudiant en el mecanisme principal de solució de problemes a partir del disseny bottom-up de funcions que acostin el llenguatge de programació al domini del problema. S'estudien els mecanismes de definició de funcions, pas de paràmetres, entorn i abast, i les principals estructures de control del flux d'execució (condicional, iteratives) -
Construint Abstraccions amb Funcions: Recursivitat i exemples.
S'introdueix el fet que una funció es pot cridar a ella mateixa, la recursivitat com a mecanisme conceptual per resoldre problemes i la idea de procés. Funcions recursives defineixen processos iteratius i recursius. -
Construint Abstraccions amb Funcions: Disseny. Tractament d'errors amb excepcions.
S'introdueix el concepte de dissenyar un programa per resoldre un problema. S'introdueix la idea d'error en un programa i com tractar-los amb el mecanisme d'excepcions. -
Construint Abstraccions amb Funcions: Exemples de resolució de problemes
Es reforcen els conceptes introduits fins el moment amb nombrosos problemes de dificultat baixa i mitjana. -
Construint Abstraccions amb Funcions: Contenidors
Es comença a treballar amb contenidors proporcionats pel llenguatge de programació: Seqüències, Llistes, Diccionaris i amb altres d'implementats dins el curs, com les Matrius o els Arbres. -
Construint Abstraccions amb Funcions: Mutabilitat. Iteradors i Generadors.
El concepte de mutabilitat es veu per primer cop relacionat amb llistes, i es discuteixen els avantatges i inconvenients de tenir estructures de dades immutables. S'introdueixen els iteradors i generadors com a noves estructures de control. -
Introducció a la Complexitat dels Algorismes
Es fa una petita introducció a la notació asimptòtica i al càlcul de la complexitat en cas pitjor d'alguns algorismes notables vistos durant el curs.
Activitats
Activitat Acte avaluatiu
Construint Abstraccions amb Funcions: Funcions i estructures de control.
Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats.Objectius: 1 2 3 4
Continguts:
- 1 . Construint Abstraccions amb Funcions: Funcions (senzilles i d'ordre superior). Entorns. Control del flux d'execució.
- 2 . Construint Abstraccions amb Funcions: Recursivitat i exemples.
- 3 . Construint Abstraccions amb Funcions: Disseny. Tractament d'errors amb excepcions.
- 4 . Construint Abstraccions amb Funcions: Exemples de resolució de problemes
Teoria
10h
Problemes
0h
Laboratori
12h
Aprenentatge dirigit
0h
Aprenentatge autònom
30h
Complexitat dels Algorismes
Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats.Objectius: 6
Continguts:
Teoria
3h
Problemes
0h
Laboratori
4h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h
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 (on-line)
- DeNero, John,
https://www.composingprograms.com -
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 -
Python pocket reference
- Lutz, Mark,
O'Reilly Media, Inc.,
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. http://www.composingprograms.com/
- Aquest és el curs CS 61A: Structure and Interpretation of Computer Programs, de l'Universitat de Berkeley, en el que aquest curs està basat https://cs61a.org/
- 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