Aquesta assignatura és la introducció a la programació pels estudiants del Grau d'IA. L'assignatura girarà al voltant del concepte d'Abstracció, posant èmfasi en el procés mitjançant el que hom és capaç de resoldre problemes utilitzant abstracció basada en funcions.
Professorat
Responsable
Jordi Delgado Pin (
)
Hores setmanals
Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
6
Competències
Competències Transversals
Transversals
CT4 [Avaluable] - Treball en equip. Ser capaç de treballar com a membre d'un equip interdisciplinari, ja sigui com un membre més o realitzant tasques de direcció, amb la finalitat de contribuir a desenvolupar projectes amb pragmatisme i sentit de la responsabilitat, assumint compromisos tenint en compte els recursos disponibles.
CT6 [Avaluable] - Aprenentatge autònom. Detectar deficiències en el propi coneixement i superar-les mitjançant la reflexió crítica i l'elecció de la millor actuació per ampliar aquest coneixement.
Competències Tècniques
Específiques
CE02 - 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ó per mitjà de sistemes computacionals i la seva aplicació per a la resolució de problemes.
CE03 - Identificar i aplicar els procediments algorítmics bàsics de les tecnologies informàtiques per dissenyar solucions a problemes, analitzant la idoneïtat i complexitat dels algoritmes proposats.
CE04 - Dissenyar i utilitzar de forma eficient els tipus i estructures de dades més adequats a la resolució d'un problema.
CE10 - Analitzar, dissenyar, construir i mantenir aplicacions de forma robusta, segura i eficient, triant el paradigma i els llenguatges de programació més adequats.
CE12 - Dominar els principis fonamentals i models de la computació i saber-los aplicar per a interpretar, seleccionar, valorar, modelar, i crear nous conceptes, teories, usos i desenvolupaments tecnològics relacionats amb la intel·ligència artificial.
CE13 - Avaluar la complexitat computacional d'un problema, identificar estratègies algorítmiques que puguin conduir a la seva resolució i recomanar, desenvolupar i implementar aquella que garanteixi el millor rendiment d'acord amb els requisits establerts.
Competències Tècniques Generals
Genèriques
CG2 - Utilitzar els coneixements fonamentals i metodologies de treball sòlides adquirits durant els estudis per adaptar-se als nous escenaris tecnològics de el futur.
CG4 - Raonar, analitzant la realitat i dissenyant algoritmes i formulacions que la modelin. Identificar problemes i construir solucions algorísmiques o matemàtiques vàlides, eventualment noves, integrant el coneixement multidisciplinari necessari, valorant diferents alternatives amb esperit crític, justificant les decisions preses, interpretant i sintetitzant els resultats en el context de l'domini d'aplicació i establint generalitzacions metodològiques a partir de aplicacions concretes.
CG8 - Observar un exercici ètic de la professió en totes les seves facetes, aplicant criteris ètics en el disseny de sistemes, algoritmes, experiments, utilització de dades, d'acord amb els sistemes ètics recomanats pels organismes nacionals i internacionals, amb especial èmfasi en seguretat, robustesa , privacitat, transparència, traçabilitat, prevenció de biaixos (de raça, gènere, religió, territori, etc.) i respecte als drets humans.
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:
CT6,
CE03,
CE10,
CE12,
CG2,
Conèixer el concepte de recursivitat i com distingir processos iteratius i recursius definits amb funcions recursives
Competències relacionades:
CT6,
CE03,
CE10,
CE12,
CG4,
Començar a entendre el concepte de disseny del programari
Competències relacionades:
CT6,
CE03,
CE10,
CG4,
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:
CT6,
CE02,
CE04,
CG4,
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:
CT4,
CE03,
CE10,
CG2,
CG4,
CG8,
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
ActivitatActe avaluatiu
Construint Abstraccions amb Funcions: Funcions i estructures de control.
Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats. Objectius:1234 Continguts:
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)
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.
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
Capacitats prèvies
Les definides en el batxillerat científic-tècnic o equivalents.