Curs 2015-16

Processadors de Llenguatge

Titulació: Codi: Tipus:
Grau en Enginyeria Informàtica 21428 Obligatòria 3r curs
Grau en Enginyeria Telemàtica 22609 Optativa
Grau en Enginyeria en Sistemes Audiovisuals 21654 Optativa

 

Crèdits ECTS: 4 Dedicació: 100 hores Trimestre: 2n

 

Departament: Dept. de Tecnologies de la Informació i les Comunicacions
Coordinador: Rafael Ramírez
Professorat:

Rafael Ramirez

Idioma:

Anglès

Horari:
Campus: Campus de la Comunicació - Poblenou

 

Presentació de l'assignatura

L'assignatura Procesadors de Llenguatges és una assignatura obligatòria que s'ofereix durant el curs d'enginyeria en informàtica. L'assignatura esta integrada en un bloc d'assignatures, conjuntament amb Llenguatges Formals, 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.

Objectius d'aprenentatge

L'objectiu de l'assignatura és solidificar, aprofundir, estendre i posar en pràctica les competències obtingudes en Llenguatges Formals. Més 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 models d'execució de diferents paradigmes de programació i identificar el millor model en diferents problemàtiques.

 

Prerequisits

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

Aquesta assignatura és assumeix l'assimilació dels conceptes apresos en Llenguatges Formals, així com en Lógica Computacional.

 

Competències

L'objectiu 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 transversalsCompetències específiques

Instrumentals

1. Capacitat de raonar a nivell abstracte

2. Habilitats cognitives

3. Sentit comú

Interpersonals

4. Competència de comunicació

Sistèmiques

5. Capacitat d'identificar la millor
metodologia per resoldre un
problema.

6. Capacitat de solucionar
problemes combinant de manera
nova i no trivial elements ja coneguts

7. Capacitat de generar idees 

1. Capacitat d'entendre a nivell intuïtiu i
formal els diferents aspectes en
llenguatges de programació: sintaxi,
semàntica i compilació de programes.

2. Capacitat d'aplicar els coneixements
de sintaxis, semàntica i compilació de
programes en contextos pràctics.

3. Capacitat d'entendre les diferents fases
de compilació i dels models d'execució
de diferents paradigmes de programació

Concreció per competències

Competències a assolir en l'assignaturaIndicadors d'assolimentProcediment d'avaluacióTemporalització

Competències generals

1. Capacitat de raonar a nivell abstracte

2. Habilitats cognitives

3. Sentit comú

4. Competència de comunicació

5. Capacitat d'identificar la millor
metodologia per resoldre un
problema.

6. Capacitat de solucionar problemes combinant de manera nova i no trivial elements ja coneguts

7. Capacitat de generar idees

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. 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àctiques i seminaris

5. Avaluació de pràctiques i seminaris

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

7. 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

 

Competències específiques

1. Capacitat d'entendre a nivell intuïtiu i formal els diferents aspectes en llenguatges de programació: sintaxi, semàntica i compilació de programes.

2. Capacitat d'aplicar els coneixements de sintaxis, semàntica i compilació de programes en contextos pràctics.

3. Capacitat d'entendre els diferents models/paradigmes de computació i d'identificar el millor model en diferents problemàtiques.

 

1. Capacitat d'entendre expressions matemàtiques elacionades amb la sintaxi i semàntica de programes i entendre els diferents passos de compilació de programes.

2. Capacitat d'especificar la sintaxi i semàntica, així com implementar un compilador per a llenguatges de programació senzills

3. Capacitat d'entendre i elaborar programes en diferents paradigmes de programació i el seu ús en diferents contextos.

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

 

Avaluació

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

 AvaluacióRecuperable?
Teoria

Avaluació mitjançant un examen final 

Si

Laboratoris

Avaluació amb les pràctiques de programació (LP) i examen final de practiques (LE)

LP: No
LE: Si 

Seminaris

Avaluació mitjançant resolució d'exercicis de seminari

No 

T: l’avaluació de la teoria mitjançant un examen final (recuperable al juliol)
L: l’avaluació del laboratoris amb les pràctiques de programació (no recuperable) i examen final de practiques (recuperable al juliol).
S: l’avaluació dels seminaris (no recuperable)

En l’avaluació, 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. L’avaluació de les pràctiques també és obligatòria es qualificada en 2 parts: una evaluació continuada al llarg del trimestre en forma de entrega de programas de ordenador (LP), i l’altra com una part del examen final de l’assignatura dedicada a temes de pràctiques (LE). Cada una de les partes han de ser qualificadas com a mínim amb un 50% per aprovar l’assignatura. La nota L correspondent a la nota de pràctiques s’obté fent la mitjana ponderada de la següent forma:

L = 0,6 * LP + 0,4 * LE

Els detalls dels terminis de lliurament de les pràctiques al llarg del trimestre i de les penalitzacions per retard en el seu lliurament serà publicada al campus global de l'assignatura.

Abans de cada seminari es presentaran problemes als alumnes per tal que ells els resolguin en equips de tres o quatre 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 tendrán tiempo para finalizar sus respuestas a los problemas al començament del seminari, después de lo cual pasarán aleatoriamente a pesentar les seves solucions a la pissarra. En l’avaluació es tindrà en compte la preparació del seminari, la presentació de la solució proposta, i l’aprofitament del seminari. L’avaluació del treball dels seminaris és obligatòria.

En cas de no aprovar l’assignatura en l’avaluació exposada en els punts anteriors, l’alumne té dret a una convocatòria en el mes de juliol. En la convocatòria de juliol solament serà possible recuperar la part de l'examen de teoria i la part de l'examen final de pràctiques. És a dir, la part de pràctiques de programació i la part de seminaris no són recuperables en la convocatòria de juliol. La nota d’aquesta convocatòria s’obtindrà de la mateixa manera que la nota de la convocatòria ordinària explicada anteriorment.

 

Continguts

Blocs de contingut

Organització i concreció dels continguts

Bloc de contingut 1. Sintaxi, semàntica i verificació formal de programas

ConceptesProcedimentsActituds

1. Gramàtiques BNF, derivacions, arbres sintàctics, parsing

2. Semàntica denotacional i semàntica axiomàtica

3. Tripletes de Hoare, invariantes i mètodes de verificació formal de programes, model checking

1. Poder especificar formalment la sintaxi i implementar parsers per a llenguatges de programació

2. Poder especificar la semàntica de llenguatges de programació.

3. Poder dissenyar especificar propietats i verificar formalment un programa

1. Apreciar els diferents tipus de formalismes útils a l'àrea dels llenguatges de programació

2. Disponibilitat a intentar entendre conceptes que inicialment semblen complexos.

Bloc de contingut 2. Compilació de programas

ConceptesProcedimentsActituds

1. Compiladors i intèrprets de llenguatges de programació

2. Estructura d'un compilador: anàlisi lèxica, anàlisi sintàctica, anàlisi semàntica, codi intermedi, optimització de codi, generació de codi.

1. Descriure el procés d'execució tant en llenguatges compilats com en llenguatges interpretats.

2. Implementar les diferents etapes de compilació per a un llenguatge imperatiu.

1. Disponibilitat a intentar entendre conceptes que inicialment semblen complexos.

2. Predisposició a adquirir coneixement sòlid de base

Bloc de contingut 3. Paradigmas de programació

ConceptesProcedimentsActituds

1. Programació lògica

2. Programació funcional

3. Programació concurrent

1. Escriure programes lògics que resolen problemes concrets

2. Escriure programes funcionals que resolen problemes concrets

3. Diferenciar entre els diferents mecanismes de sincronització i comunicació disponibles en programació concurrent, i escriure programes usant aquests mecanismes per resoldre problema concrets.

1. Disponibilitat a intentar entendre conceptes que inicialment semblen complexos.

2. Predisposició a adquirir coneixement sòlid de base

3. Disponibilitat de dedicar el temps necessari a cada concepte

 

Metodologia

Classes de Teoria

En aquestes classes s'aborden els conceptes teòrics dels blocs de contingut de l'assignatura. Les classes de teoria consisteixen en 9 sessions de dues hores de durada. El professor portarà a terme les explicacions dels continguts teòrics de l'assignatura per a això es disposarà d'ordinador, projector i pissarra com material suport. S'empraran transparències que serviran com apunts de classe per als alumnes. Els conceptes analitzats en aquest tipus de sessions seran utilitzats en les dues activitats d'aprenentatge restants de l'assignatura; Sessions de Seminaris I Sessions de Pràctiques. 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.

Sessions de Pràctiques

En aquestes sessions es desenvolupen els punts pràctics del bloc de contingut de l'assignatura. Aquestes sessions es fan en el laboratori i tenen una durada de dues hores. El professor de pràctiques lliurarà un enunciat en la qual s'explica el desenvolupament de la pràctica i donarà les directrius necessàries perquè els alumnes realitzin les comprovacions i el desenvolupament que se'ls sol·liciti en els enunciats de la pràctica. L'alumne lliurarà una memòria de la pràctica al final de la sessió, sobre la qual el professor avaluarà que s'han desenvolupat adequadament els conceptes pràctics que s'han plantejat en l'enunciat de la pràctica. Aquesta activitat es realitza per parelles i es pressuposa que continua fora de l’aula. Les sessions de pràctica estaran orientades a cobrir els punts pràctics dels continguts abordats a la classe de teoria.

Sessions de Seminaris

Aquestes sessions estan dedicades a descriure punts de particular rellevància dels blocs de contingut de l'assignatura. Les sessions de seminaris consisteixen en sessions de dues hores de durada. En aquestes sessions, el professor dirigirà i plantejarà problemes específiques que ajudaran a reforçar els coneixements adquirits en les sessions de teoria i en les pràctiques de l'assignatura. 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. Per aquesta activitat, el professor disposarà d'ordinador, projector i pissarra com material suport. Es podran emprar transparències i en general, qualsevol tipus de material que ajudi a reforçar els conceptes adquirits en les sessions de teoria de l'assignatura. Las activitats seran portadas a terme en grups de 3-4 estudiants.

 

Recursos

Bibliografia bàsica (suport paper i electrònic)

Compiladores : principios, técnicas y herramientas
Aldred V. Aho, Ravi Sethi, Jefrey D. Ullman
Edición: Mexico [etc.] : Addison Wesley Longman, 1998.
ISBN: 968-444-333-1

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)

Recursos didàctics. Material docent de l’assignatura

Web de la assignatura
Apunts
Colecció d’exercicis
Enunciats de les pràctiques