Crèdits
6
Tipus
- GRAU: Obligatòria d'especialitat (Computació)
- GCED: Optativa
Requisits
- Corequisit: PROP
Departament
CS
Professorat
Responsable
- Gerard Escudero Bakx ( gerard.escudero@upc.edu )
Altres
- Edelmira Pasarella Sanchez ( edelmira@cs.upc.edu )
- Jordi Delgado Pin ( jdelgado@cs.upc.edu )
- Jordi Petit Silvestre ( jpetit@cs.upc.edu )
Hores setmanals
Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
6
Competències
Comunicació eficaç oral i escrita
- G4.3 - Comunicar-se de manera clara i eficient en presentacions orals i escrites sobre temes complexos, adaptant-se a la situació, al tipus de públic i als objectius de la comunicació, utilitzant les estratègies i els mitjans adequats. Analitzar, valorar i respondre adequadament a les preguntes de l'auditori.
Ús solvent dels recursos d'informació
- G6.3 - Planificar i utilitzar la informació necessària per a un treball acadèmic (per exemple, per al treball de final de grau) a partir d'una reflexió crítica sobre els recursos d'informació utilitzats. Gestionar la informació de manera competent, independent i autònoma. Avaluar la informació trobada i identificar-ne les llacunes.
Especialitat computació
- CCO1.2 - Demostrar coneixement dels fonaments teòrics dels llenguatges de programació i les tècniques de processament lèxic, sintàctic i semàntic associades, i saber aplicar-les per a la creació, el disseny i el processament de llenguatges.
Objectius
-
Conèixer les diferents fases de la compilació, en particular l'anàlisi lèxic, el sintàctic i el semàntic.
Competències relacionades: CCO1.2, -
Conèixer eines per a la creació d'analitzadors lèxics i sintàctics.
Competències relacionades: CCO1.2, -
Conèixer les diferències entre compiladors i intèrprets.
Competències relacionades: CCO1.2, -
Diferenciar les característiques d'un llenguatge de programació. Identificar els seus punts forts i els seus punts febles i ser capaç de justificar una tria.
Competències relacionades: G4.3, CCO1.2, -
Conèixer les característiques principals dels llenguatges de programació funcionals.
Competències relacionades: CCO1.2, -
Conèixer construccions avançades dels llenguatges de programació.
Competències relacionades: CCO1.2, -
Ser capaç de modelar i especificar problemes de hardware o software usant llenguatges funcionals.
Competències relacionades: G4.3, G6.3, CCO1.2, -
Conèixer les característiques principals dels llenguatges de scripting.
Competències relacionades: CCO1.2, -
Ser capaç d'aprendre nous llenguatges de programació de forma autònoma.
Competències relacionades: CCO1.2, G6.3,
Continguts
-
Introducció als llenguatges de programació.
Turing completesa. Paradigmes de la programació. Característiques principals. -
Introducció a la compilació.
Compilació i interpretació. L'anàlisi lèxic. L'anàlisi sintàctic. Gramàtiques. Taula de símbols. Arbre de sintaxi abstracta. Anàlisi semàntic. Generació de codi. -
Llenguatges funcionals
Fonaments. Pattern Matching. Avaluació Eager/Lazy. Introducció a Haskell. -
Sistemes de tipus
Els tipus en els llenguatges de programació. Els tipus i la fiabilitat. Sistemes de tipus en els llenguatges funcionals i en els llenguatges orientats a objectes. -
Programació d'ordre superior
Les funcions d'ordre superior. Aplicacions. Programació de funcions d'ordre superior en llenguatges funcionals i orientats a objectes. -
Especificació i modelat usant llenguatges funcionals
Llenguatges declaratius en l'especificació i el modelat. Prototipat. Especificacions executables. Transformació de programes. -
Llenguatges de scripting
Característiques. Utilització de llenguatges de scripting. Combinació de paradigmes. Tipus. Ordre superior. Breu introducció a Python.
Activitats
Activitat Acte avaluatiu
Introducció a la compilació
Presentació dels continguts a les classes de teoria. Realització de pràctiques de laboratori utilitzant analitzadors lèxics i sintàctics i realitzant un petit treball pràctic.Objectius: 1 2 3
Continguts:
Teoria
2h
Problemes
0h
Laboratori
8h
Aprenentatge dirigit
0h
Aprenentatge autònom
8h
Programació d'ordre superior
Presentació de continguts a les sessions de teoria i aplicació al llenguatge Haskell a les sessions de laboratori.. També es veurà quines formes de programació d'ordre superior admeten a d'altres llenguatges coneguts com ara Java.Objectius: 4 5 6 9
Continguts:
Teoria
2h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h
Especificació i modelat usant llenguatges funcionals
Presentació de continguts a les sessions de teoria i realització d'algun cas pràctic, que posteriorment es codificat a la sessió de laboratori.Objectius: 5 7
Continguts:
Teoria
4h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h
Llenguatges de scripting
Presentació de les característiques principals i d'algun exemples de llenguatges a classe de teoria. Utilització de llenguatges de scripting al laboratori, com ara gestors de processos o per navegadors web, etc.Objectius: 3 4 8 9
Continguts:
Teoria
2h
Problemes
0h
Laboratori
6h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h
Aprenentatge d'un nou llenguatge de programació
L'estudiant haurà d'aprendre un nou llenguatge que se li assignarà.
Teoria
2h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
4h
Activitats de repàs
Teoria
2h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h
Metodologia docent
Les classes estan dividides en sessions de teoria i laboratori.A les sessions de teoria es desenvoluparan els coneixements de l'assignatura, intercalant l'exposició de nou material teòric amb exemples i la interacció amb els alumnes per tal de discutir els conceptes.
A les classes de laboratori es posaran en pràctiques els conceptes introduïts i s'aplicaran a llenguatges de programació i a problemes concrets. Es realitzaran tres petites pràctiques que aniran associades a les diferents proves d'avaluació.
Mètode d'avaluació
La nota de l'assignatura ésN = 0.50·F + 0.20·P1 + 0.20·P2 + 0.10·D
on:
F = nota de l'examen final
P1 = nota delm parcial (mitjans de curs)
P2 = nota de a pràctica (finals de curs)
D = nota del treball dirigit
L'examen parcial sera un examen d'ordinador que avalua Haskell. L'examen final serà un examen escrit que avaluarà sobre tots els continguts del curs. La pràctica consisteix en utilitzar eines per generar compiladors i Python per a resoldre un cas pràctic.
El treball dirigit consisteix en preparar un vídeo i un document escrit sobre les propietats d'un o alguns llenguatges de programació. La seva avaluació es farà per evaluació entre companys (co-avaluació). Les qualificacions de les competències transversals s'obtenen del treball dirigit.
Bibliografia
Bàsic
-
Compiler design
- Wilhelm, R.; Maurer, D,
Addison-Wesley,
1995.
ISBN: 978-0201422900
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001228599706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Compilers: principles, techniques, and tools
- Aho, A.V.; Sethi, R.; Ullman, J.D,
Addison-Wesley,
2007.
ISBN: 9780321491695
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003301129706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Concepts in programming languages
- Mitchell, J.C,
Cambridge University Press,
2003.
ISBN: 978-0521780988
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002623469706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Programming language pragmatics
- Scott, M.L,
Morgan Kaufmann,
2016.
ISBN: 9780124104099
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004180229706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Haskell: the craft of functional programming
- Thompson, S,
Addison-Wesley,
2011.
ISBN: 978-0201882957
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003978689706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Razonando con Haskell: un curso sobre programación funcional
- Ruiz Jiménez, B.C,
Thomson-Paraninfo,
2004.
ISBN: 9788497322775
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002768069706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Capacitats prèvies
Capacitats prèvies sobre lògica adquirides a l'assignatura Fonaments Matemàtics (FM):- Coneixement dels conceptes bàsics de lògica de proposicions i predicats
- Coneixements sobre Inferència lògica.
Capacitats prèvies sobre Programació adquirides a les assignatures d'Estructura de Dades i Algorismes (EDA) i Projectes de Programació (PROP):
- Coneixement sobre programació.
- Coneixement sobre llenguatges de programació orientats a objectes