Curs 2013-2014

Processadors de Llenguatge II (12470)

Titulació / estudi: Enginyeria en Informàtica
Curs acadèmic: 4t
Trimestre: 1r
Nombre de crèdits ECTS: 3,6
Hores dedicació estudiant: 90 hores
Llengua o llengües de la docència: castellà, anglès


1. Presentació de l'assignatura

L'assignatura Processadors de Llenguatges II és una assignatura obligatòria que s'oferix durant el curs d'enginyeria en informàtica, formant part del segon cicle de l'ensenyament. L'assignatura esta integrada en un bloc d'assignatures, conjuntament amb Processadors de Llenguatges I, en la qual s'estudia la sintaxi, semàntica i compilació de programes i els principals conceptes dels llenguatges de programació. L'assignatura té un component teòric i altre pràctic. Dintre del component teòric l'èmfasi esta en la comprensió dels conceptes a nivell intuïtiu mes que en la utilització estricta de llenguatge matemàtic.

L'assignatura esta composta de tres activitades principals: classes de teoria, seminaris i laboratoris. En les classes de teoria s'introduïxen els conceptes formals i matemàtics i es mostren exemples de la seva aplicació. En els seminaris els alumnes resolen petits problemes. Cada problema correspon a un dels conceptes introduïts en classe de teoria. En els laboratoris es presentin problemes de més complexitat i de caràcter més computacional perquè els alumnes tinguin l'oportunitat de posar en pràctica els conceptes apresos.


2. Prerequisits per al seguiment de l'itinerari formatiu

Els coneixements previs per al seguiment de l'assignatura són certes nocions de matemàtiques bàsiques adquirides en l'ensenyament secundari obligatori i durant els primers tres cursos dels estudis. En particular, els coneixements previs requerits per a l'assignatura són:

• Nocions algebraiques bàsiques: funcions (injectives, biyectivas), conjunts i operacions elementals sobre conjunts, relacions d'equivalència.
• Nocions bàsiques de lògica matemàtica: relacions, predicats, conectivos lògics.
• Aritmètica bàsica.
• Capacitat bàsica per a comprendre i escriure expressions matemàtiques a nivell elemental.

Aquesta assignatura és assumeix l'assimilació dels conceptes apresos en Processadors de Llenguatge I, així com en Autòmats I.


3. Competències a assolir en l'assignatura

El objectivo fonamental de l'assignatura és que els alumnes adquireixin els aspectes fonamentals relacionats amb els lenguages de programació: sintaxi, semàntica i compilació de programes, així com nocions dels diferents paradigmes de programació.

Competències generals

Competències específiques


Instrumentals

1. Capacidad de razonar a nivel abstracto
2. Habilidades cognitivas
3. Sentido común

Interpersonals

4. Competencia de comunicación

Sistèmiques

5. Capacidad de identificar la mejor metodología para resolver un problema.

6. Capacidad de solucionar problemas combinando de manera nueva y no trivial elementos ya conocidos

7. Capacidad de generar ideas

Altres

1. Capacidad de entender a nivel intuitivo y formal los diferentes aspectos en lenguajes de programación: sintaxis, semántica y compilación de programas.

2. Capacidad de aplicar los conocimientos de sintaxis, semántica y compilación de programas en contextos prácticos.

3. Capacided de entender los diferentes modelos/paradigmas de computación y de identificar el mejor modelo en diferentes problemáticas.


4. Objectius d'aprenentatge

L'objectiu de l'assignatura és solidificar, aprofundir, estendre i posar en pràctica les competències obtingudes en Processadors de Llenguatge I, l'assignatura precedent. Mas concretament, es pretén aconseguir que els alumnes desenvolupin la capacitat d'especificar la sintaxi i semàntica de llenguatges de programació simples, verificar formalment programes, i implementar compiladors per a llenguatges de programació senzills. Així mateix, els estudiants haurien de desenvolupar competències per a entendre els diferents models/paradigmes de computació, identificar el millor model en diferents problemàtiques i desenvolupar programes usant aquest model.


5. Avaluació

•5.1 Criteris generals d'avaluació

En l'avaluació continuada es té en compte cada una de les tres activitats que constitueixen l'assignatura: classes de teoria, laboratoris y seminaris:

T: l'avaluació de la teoria mitjançant un examen final
L: l'avaluació del laboratoris amb les pràctiques de programació i examen final de pràctiques.
S: l'avaluació dels seminaris

En l'avaluació continuada, cal aprovar cada una de les tres activitats per separat i la nota final s'obté fent la mitjana ponderada de la següent forma:

Nota Final = 0,6 * T + 0,3 * L + 0,1 * S

L'examen de teoria es realitzarà sobre els continguts desenvolupats a classe de teoria i als seminaris. És un examen escrit i individual que avalua totes les competències desenvolupades al llarg de l'assignatura. Aquesta avaluació és obligatòria i ha de ser qualificada amb com a mínim un 50% per tal de aprovar l'assignatura.

En els laboratoris es realitzen un sèrie de pràctiques que posen a prova la capacitat dels alumnes de aplicar la teoria en forma de programes en un ordinador. Les pràctiques es realitzen en parella, de manera que els alumnes hagin de cooperar i saber comunicar-se per resoldre els problemes. Aquesta avaluació també és obligatòria i ha de ser qualificada com a mínim amb un 50% en la parte de pràctiques y 50% en la parte de examen final per tal de aprovar l'assignatura.

Abans de cada seminari es presentaran problemes als alumnes per tal que ells els resolguin en equips de tres abans de la sessió, com a una preparació prèvia al seminari. Aquests problemes corresponen a conceptes o coneixements tractats a classe de teoria. Els alumnes han de lliurar les solucions al començament del seminari, i a més a més es demanarà a els alumnes que presentin les seves solucions a la pissarra. En l'avaluació es tindrà en compte la preparació del seminari, la presencia en ell i també l'aprofitament. L'avaluació del treball dels seminaris és obligatòria i com s'ha dit, la nota S que s'obtingui ha de ser qualificada com a mínim amb un 50% per tal d'aprovar l'assignatura.

En cas de no aprovar l'assignatura en l'avaluació continuada exposada en els punts anteriors,l'alumne té dret a una convocatòria en el mes de setembre. La nota d'aquesta convocatòria s'obtindrà en un examen dels continguts de les classes de teoria i en la nota L. En cas d'haver suspès L en l'avaluació continuada, es podrà entregar la pràctica sencera de tota l'assignatura i s'avaluarà de nou. Un cop aprovades T i L per separat, la nota de Setembre s'obtindrà com:

Nota Setembre = 0,6*T+0,4*L


•5.2 Concreció per competències

Competències a assolir en l'assignatura

Indicador d'assoliment

Procediment d'avaluació

Temporalització


Competències generals

1. Capacidad de razonar a nivel abstracto

2. Habilidades cognitivas

3. Sentido común

4. Competencia de comunicación

5. Capacidad de identificar la mejor metodología para resolver un problema.

6. Capacidad de solucionar problemas combinando de manera nueva y no trivial elementos ya conocidos

7. Capacidad de generar ideas


Competències específiques

1. Capacidad de entender a nivel intuitivo y formal los diferentes aspectos en lenguajes de programación: sintaxis, semántica y compilación de programas.

2. Capacidad de aplicar los conocimientos de sintaxis, semántica y compilación de programas en contextos prácticos.

3. Capacided de entender los diferentes modelos/paradigmas de computación y de identificar el mejor modelo en diferentes problemáticas.


1. Capacitat de solucionar problemas abstractes

2. Capacitat de propasar solucions a problemes

3. Capacitat de propasar solucions a problemes

4. Solucions coherents i ben
escrits a les pràctiques i seminaris

5. Solucions coherents a les pràctiques i seminaris

6. Solucions coherents a les pràctiques i seminaris

7. Solucions enginyoses a
problemes presentats

1. Capacidad de entender expresiones matemáticas relacionadas con la sintaxis y semántica de progamas y entender los diferentes pasos de compilacion de progamas.

2. Capacidad de especificar la sintaxis y semántica, asi como implementar un compilador para lenguajes de programacion sencillos

3. Capacidad de entender y elaborar programas en diferentes paradigmas de programación y su uso en diferentes contextos.


1. Avaluació de pràctiques,
seminaris i de l'examen final

2. Avaluació de pràctiques,
seminaris i de l'examen final

3. Avaluació de pràctiques,
seminaris i de l'examen final

4. Avaluació de pràctiquesi seminaris

5. Avaluació de pràctiquesi seminaris

6. Avaluació de pràctiques,
seminaris i de l'examen final

7. Avaluació de pràctiques,
seminaris i de l'examen final


1. Avaluació de seminaris i de l'examen final

2. Avaluació de pràctiques,
seminaris i de l'examen final

3. Avaluació de pràctiques,
seminaris i de l'examen final


1. Tot el trimestre

2. Tot el trimestre

3. Tot el trimestre

4. Tot el trimestre

5. Tot el trimestre

6. Tot el trimestre

7. Tot el trimestre

1. Tot el trimestre

2. Tot el trimestre

3. Tot el trimestre

6. Continguts

6.1. Blocs de contingut

• Bloc de contingut 1. Sintaxis, semántica y verificacion formal de programas
• Bloc de contingut 2. Compilación de programas
• Bloc de contingut 3. Paradigmas de programación

6.2. Organització i concreció dels continguts

Bloc de contingut 1. Sintaxis, semántica y verificacion formal de programas

Conceptes

Procediments

Actituds

1. Gramáticas BNF, derivaciones, arboles sintacticos, parsing

2. Semántica denotacional y semantica axiomática

3. Tripletas de Hoare, invariantes y métodos de verificación formal de programas.

1. Poder especificar formalmente la sintaxis e implementar parsers para lenguages de programación

2. Poder especificar la semántica de porciones de lengaujes de programación.

3. Poder diseñar invariantes y verificar formalmente un programa

1. Apreciar los diferentes tipos de formalismos utiles en el area de los lenguajes de programación

2. Disponibilidad a intentar entender conceptos que inicialmente parecen
complejos.


Bloc de contingut 2.
Compilación de programas

Conceptes

Procediments

Actituds

1. Compiladores e interpretes de lenguajes programacion

2. Estructura de un compilador: analisis lexico, analisis sintáctico, analisis semático, codigo intermedio, optimización de código, generación de código.


1. Describir el proceso de ejecucion tanto en lenguajes compilados como en lenguajes interpretados.

2. Implementar las diferentes etapas de compilacion para un lenguaje imperativo.


1. Disponibilidad a intentar entender conceptos que
inicialmente parecen
complejos.

2. Predisposición a
adquirir conocimiento
sólido de base


Bloc de contingut 3.
Paradigmas de programación

Conceptes

Procediments

Actituds



1. Programación lógica

2. Programación funcional

3. Programación concurrente

1. Escribir programas lógicos que resuleven problemas concretos

2. Escribir programas funcionales que resuleven problemas concretos

3. Difereciar entre los diferentes mecanismos de sincronización disponibles en programacion concurrente y escribir programas funcionales usando estos mecanismos para resolver problema concretos.

1. Disponibilidad a intentar entender conceptos que
inicialmente parecen
complejos.

2. Predisposición a
adquirir conocimiento
sólido de base

3. Disponibilidad de
dedicar el tiempo
necesario a cada concepto

7. Metodologia

Enfocament metodològic de l'assignatura

El procés habitual d'aprenentatge comença amb una sessió de teoria en la que es presenten certs fonaments teorico-pràctics. Aquesta activitat es realitzar amb to el grup d'estudiants. L'estudiant haurà de complementar aquesta activitat amb un lectura detinguda dels seus propis apunts i el material addicional que el professor hagi proporcionat. Per exemple, un sessió de teoria de 2 hores, convenientment aprofitades, requerirà un treball addicional fora de l'aula d'1 hora per part de l'estudiant.

Posteriorment es realitzaran algunes sessió d'exercicis, en les quals l'estudiant posa en pràctica els conceptes i tècniques presentades a la sessió de teoria, mitjançant la resolución de petits problemes. Pels primers exercicis de la sessió es proporcionaran les solucions, però per la resta no. L'objectiu és que consolidi els fonaments per tal que posteriorment pugi resolgui problemes de major complexitat. Per aquesta activitat el grup es divide en cuatre i es realitza en cuatre grups petits de estudiants.

El següent pas en el procés d'aprenentatge és la sessió de pràctiques. En ella es proposen uns problemes de mida més gran que requereixen integrar diferents conceptes i tècniques. Las practicas son incrementales, cada una añadiendo a la practica anterior. Aquesta activitat es realitza per parelles, en grups d'uns 20 estudiants, i es pressuposa que continua fora de l'aula.

L'últim pas en el procés d'aprenentatge de cada bloc de continguts és el de la resolució d'uns exercicis d'autoavaluació, mitjançant els quals l'alumne pot comprovar si ha adquirit les competències que posteriorment s'avaluaran a l'examen final.


8. Fonts d'informació i recursos didàctics

8.1 Fonts d'informació per a l'aprenentatge. Bibliografia bàsica (suport paper i electrònic)

Programming Languages Design and Implementation
Terrence Pratt and Marvin Zelkowitz
Prentice Hall (2001)

Concepts of Programming Languages
Robert Sebesta
Addison Wesley (2002)

Modern compiler implementation in ML
Andrew W. Appel
Cambridge University Press (1997)

8.2. Fonts d'informació per a l'aprenentatge. Bibliografia complementària (suport paper i electrònic)

8.3. Fonts d'informació per a l'aprenentatge. Bibliografia de reforç (suport paper i electrònic)

8.4. Recursos didàctics. Material docent de l'assignatura

Web de la assignatura: http://www.iua.upf.edu/~rramirez/PL2
Apunts
Colecció d'exercicis (amb solució)
Enunciats de les pràctiques
Exàmens anys anteriors

8.5. Recursos didàctics. Materials i eines de suport

SWI-Prolog self-extracting .EXE (3.75mb)
Prolog Introductory Tutorial
Brief Java Threads Tutorial