Conceptes Avançats de Programació

Esteu aquí

Crèdits
6
Tipus
Complementària d'especialitat (Enginyeria del Software)
Requisits
  • Prerequisit: IES
  • Prerequisit: PROP
Departament
CS
Aquesta assignatura pretén explicar conceptes de programació que aprofundeixen en l'ús de determinades construccions i estructures lligades a paradigmes de programació que els estudiants ja haurien de conèixer. Enguany s'explica programació funcional: funcions com a objectes de primera classe, closures i model d'entorns, programació fent servir funcions d'ordre superior (composició, pipelining, tail call optimization, continuation passing style, etc), immutabilitat en estructures de dades, avaluació mandrosa i macros.

Professorat

Responsable

  • Gerard Escudero Bakx ( )
  • Jordi Delgado Pin ( )

Hores setmanals

Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
6

Competències

Competències Transversals

Treball en equip

  • G5 [Avaluable] - Ser capaç de treballar com a membre d'un equip, ja sigui com a un membre més, ja sigui realitzant tasques de direcció, amb la finalitat de contribuir a desenvolupar projectes d'una manera pragmàtica i amb sentit de la responsabilitat; assumir compromisos tenint en compte els recursos disponibles.
    • 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 de cada especialitat

Especialitat enginyeria del software

  • CES1 - Desenvolupar, mantenir i avaluar serveis i sistemes software que satisfacin tots els requisits de l'usuari, que es comportin de forma fiable i eficient, que tinguin un desenvolupament i un manteniment assequible i que compleixin normes de qualitat aplicant les teories, els principis, els mètodes i les pràctiques d'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.

Objectius

  1. 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, CT4.2, CT5.1, CCO2.2, CES1.1, CES1.3, CES1.7,
  2. Treballar les tècniques associades a funcions d'ordre superior en el llenguatge de programació Clojure
    Competències relacionades: CT4.2, CT5.2, CT5.3, CT4.1, CES1.1, CES1.3,
  3. Conèixer què és un tancament (closure) i algunes tècniques associades a la seva utilització.
    Competències relacionades: CT1.2C, CT4.2, CT5.1, CT5.2, CES1.1, CES1.3,
  4. Conèixer un llenguatge de programació dinàmic i funcional (híbrid) com Clojure
    Competències relacionades: CT5.3, CES1.1, CES1.3, CES1.7,
  5. Conèixer estructures de dades immutables i quines conseqüències té disposar-ne en un llenguatge de programació.
    Competències relacionades: CT5.1, CT5.2, CT5.3, CCO2.2, CES1.1, CES1.3, CES1.7, CT4.1,
  6. Conèixer el concepte d'avaluació mandrosa i les conseqüències de poder triar entre diferents tipus d'avaluació
    Competències relacionades: CT4.2, CT5.1, CT5.3, CES1.1, CES1.3, CES1.7,
  7. Ser capaç de desenvolupar en equip exercicis que utilitzin part del que s'ensenya en el curs
    Competències relacionades: G5.2, CES1.1, CES1.7,

Continguts

  1. Introducció a Clojure
    Expressions, condicionals, variables locals (let), definició de funcions, seqüències (llistes, vectors, strings), recursivitat i iteració.
  2. 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
  3. 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.
  4. Programació amb funcions d'ordre superior: Tècniques
    Composició, Pipelining, CPS, TCO & Trampolining
  5. 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)
  6. Avaluació mandrosa
    Estructures de dades "infinites". Aplicacions
  7. 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

Funcions de primera-classe i Closures: Model d'entorns

Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats.
Objectius: 1 2 3
Continguts:
Teoria
8h
Problemes
0h
Laboratori
8h
Aprenentatge dirigit
0h
Aprenentatge autònom
18h

Programació amb funcions d'ordre superior: Tècniques

Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats.
Objectius: 1 2 3
Continguts:
Teoria
8h
Problemes
0h
Laboratori
8h
Aprenentatge dirigit
0h
Aprenentatge autònom
18h

Control teoria


Objectius: 4 1 2 3
Setmana: 8
Teoria
0h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
12h

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

Avaluació mandrosa

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

Pràctica

Data d'entrega: Al llarg del curs
Objectius: 7
Setmana: 15 (Fora d'horari lectiu)
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Control final


Objectius: 4 5 6 1 2 3
Setmana: 15 (Fora d'horari lectiu)
Teoria
2h
Problemes
0h
Laboratori
0h
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 (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ó seria:
= Teoria*0.5 + L*0.5 si la nota de Teoria és >= 3.5
= Teoria si la nota de Teoria és < 3.5
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àsica:

Complementaria:

Capacitats prèvies

Els alumnes haurien de tenir coneixements suficients d'estructures de dades i algorismes