Curs 2014-15
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, Zacharias Vamvakousis |
Idioma: | Anglès |
Horari: | |
Campus: | Campus de la Comunicació - Poblenou |
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.
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.
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 transversals | Competè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 6. Capacitat de solucionar 7. Capacitat de generar idees |
1. Capacitat d'entendre a nivell intuïtiu i 2. Capacitat d'aplicar els coneixements 3. Capacitat d'entendre les diferents fases |
Concreció per competències
Competències a assolir en l'assignatura | Indicadors d'assoliment | Procediment 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 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 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, 7. Avaluació de pràctiques, seminaris i de l’examen final |
1. 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 |
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 |
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.
Blocs de contingut
Organització i concreció dels continguts
Bloc de contingut 1. Sintaxi, semàntica i verificació formal de programas
Conceptes | Procediments | Actituds |
---|---|---|
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
Conceptes | Procediments | Actituds |
---|---|---|
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ó
Conceptes | Procediments | Actituds |
---|---|---|
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 |
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.
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
Recursos didàctics. Materials i eines de suport
Brief Java Threads Tutorial