Professorat
Responsable
- Gerard Escudero Bakx ( gerard.escudero@upc.edu )
- Jordi Delgado Pin ( jdelgado@cs.upc.edu )
Hores setmanals
Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
6
Competències
Treball en equip
- G5.2 - Planificar i acordar els objectius, les regles de funcionament, les responsabilitats, l'agenda i el procediment de revisió de la feina. Identificar conflictes, negociar-los i resoldre-los de forma efectiva. Adaptar-se a diferents tipus de grups (gran/petit, tècnic/mixt, presencial /a distància). Interactuar amb eficàcia i promoure la participació de tots els membres del grup.
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.1 - Triar, combinar i explotar diferents paradigmes de programació, en el moment de construir software, tenint en compte criteris com la facilitat de desenvolupament, l'eficiència, la portabilitat i la mantenibilitat.
- 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.
- CT5.3 - Dissenyar, escriure, provar, depurar, documentar i mantenir codi en un llenguatge d'alt nivell per a resoldre problemes de programació aplicant esquemes algorísmics i utilitzant estructures de dades.
Especialitat enginyeria del software
- CES1.1 - Desenvolupar, mantenir i avaluar sistemes i serveis software complexos i/o crítics.
- CES1.3 - Identificar, avaluar i gestionar els riscos potencials associats a la construcció de software que es poguessin presentar.
- CES1.7 - Controlar la qualitat i dissenyar proves en la producció de software.
Especialitat computació
- CCO2.2 - Capacitat per a adquirir, obtenir, formalitzar i representar el coneixement humà d'una forma computable per a la resolució de problemes mitjançant un sistema informàtic en qualsevol àmbit d'aplicació, particularment en els que estan relacionats amb aspectes de computació, percepció i actuació en ambients o entorns intel·ligents.
Objectius
-
Conèixer les capacitats que proporciona a un llenguatge de programació el fet de disposar de funcions d'ordre superior
Competències relacionades: CT1.2C, CES1.1, CT4.2, CCO2.2, CES1.3, CES1.7, CT5.1, -
Treballar les tècniques associades a funcions d'ordre superior en el llenguatge de programació Clojure
Competències relacionades: CES1.1, CT4.1, CT4.2, CT5.2, CES1.3, CT5.3, -
Conèixer què és un tancament (closure) i algunes tècniques associades a la seva utilització.
Competències relacionades: CT1.2C, CES1.1, CT4.2, CT5.2, CES1.3, CT5.1, -
Conèixer un llenguatge de programació dinàmic i funcional (híbrid) com Clojure
Competències relacionades: CES1.1, CES1.3, CES1.7, CT5.3, -
Conèixer estructures de dades immutables i quines conseqüències té disposar-ne en un llenguatge de programació.
Competències relacionades: CES1.1, CT4.1, CT5.2, CCO2.2, CES1.3, CES1.7, CT5.1, CT5.3, -
Conèixer el concepte d'avaluació mandrosa i les conseqüències de poder triar entre diferents tipus d'avaluació
Competències relacionades: CES1.1, CT4.2, CES1.3, CES1.7, CT5.1, CT5.3, -
Ser capaç de desenvolupar en equip exercicis que utilitzin part del que s'ensenya en el curs
Competències relacionades: CES1.1, G5.2, CES1.7,
Continguts
-
Introducció a Clojure
Expressions, condicionals, variables locals (let), definició de funcions, seqüències (llistes, vectors, strings), recursivitat i iteració. -
Funcions de primera-classe
Funcions com a paràmetre, guardar funcions en estructures de dades. Maneres d'iterar sobre col·leccions: reduce, map, filter, foldr, etc. Retornar funcions -
Closures: Model d'entorns
Context lèxic (lexical scope), Les funcions no són tals: Capturen el context lèxic, Si tenim closures no calen objectes: Exemples. Explicar el funcionament basat en el model d'entorns. -
Programació amb funcions d'ordre superior: Tècniques
Composició, Pipelining, CPS, TCO & Trampolining -
Estructures de dades immutables
Avantatges i inconvenients. El cas de Clojure: Separar la gestió de l'estat i fer-la explícita (immutabilitat per defecte) -
Seqüències Mandroses
Estructures de dades "infinites". Aplicacions -
Macros
El concepte de 'Macro' en el món dels llenguatges Lisp. Reflexió.
Activitats
Activitat Acte avaluatiu
Introducció a Clojure
Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats.Objectius: 4
Continguts:
Teoria
4h
Problemes
0h
Laboratori
4h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h
Estructures de dades immutables
Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats.Objectius: 5
Continguts:
Teoria
2h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h
Seqüències mandroses
Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats.Objectius: 6
Continguts:
Teoria
2h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h
Macros
Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats.Objectius: 4
Continguts:
Teoria
4h
Problemes
0h
Laboratori
4h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h
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 (P i F), una a mitjans de curs i l'altre al final i exercicis de laboratori que s'entregaran en grups de dos persones (L). L'avaluació del laboratori es farà de la següent manera: Els estudiants faran entrega d'entre 5 i 7 exercicis al llarg del curs en grups de dos persones, i la nota de laboratori serà la mitjana d'aquestes notes.Aleshores, el mètode d'avaluació és = Teoria*0.8 + L*0.2
on:
Teoria: MAX(F,(P+F)/2)
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
-
The Joy of Clojure
- Fogus, Michael; Houser, Chris,
Manning,
2014.
ISBN: 9781638351283
https://ebookcentral-proquest-com.recursos.biblioteca.upc.edu/lib/upcatalunya-ebooks/detail.action?pq-origsite=primo&docID=6642578 -
Clojure Programming: Practical Lisp for the Java World
- Emerick, Chas; Carper, Brian; Grand, Christophe,
O'Reilly Media,
2012.
ISBN: 9781449394707
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991058640967306706&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Mastering Clojure Macros: Write Cleaner, Faster, Smarter Code
- Jones, Colin,
The Pragmatic Programmers,
2014.
ISBN: 1941222226
https://ebookcentral-proquest-com.recursos.biblioteca.upc.edu/lib/upcatalunya-ebooks/detail.action?pq-origsite=primo&docID=5307312
Complementari
-
Elements of functional programming
- Reade, Chris,
Addison-Wesley,
1989.
ISBN: 0201129159
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991000232459706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Thinking Functionally with Haskell
- Bird, Richard,
Cambridge University Press,
2014.
ISBN: 9781107452640
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991005151878906711&context=L&vid=34CSUC_UPC:VU1&lang=ca