Curso 2015-2016

Procesadores de Lenguaje

Titulación: Código: Tipo:
Grado en Ingeniería Informática 21428 Obligatoria 3º curso
Grado en Ingeniería Telemática 22609 Optativa
Grado en Ingeniería en Sistemas Audiovisuales 21654 Optativa

 

Créditos ECTS: 4 Dedicación: 100 horas Trimestre:

 

Departamento: Dpto. de Tecnologías de la Información y las Comunicaciones
Coordinador: Rafael Ramírez
Profesorado:

Rafael Ramirez, Zacharias Vamvakousis

Idioma:

Angl�s

Horario:
Campus: Campus de la Comunicación - Poblenou

 

Presentación de la assignatura

La asignatura Procesadores de Lenguajes es una asignatura obligatoria que se ofrece durante el curso de ingenier�a en inform�tica. La asignatura est� integrada en un bloque de asignaturas, conjuntamente con lenguajes formales, en la que se estudia la sintaxis, sem�ntica y compilaci�n de programas y los principales conceptos de los lenguajes de programaci�n. La asignatura tiene un componente te�rico y otro pr�ctico. Dentro del componente te�rico el �nfasis est� en la comprensi�n de los conceptos a nivel intuitivo m�s que en la utilizaci�n estricta de lenguaje matem�tico.

La asignatura est� compuesta de tres activitades principales: clases de teor�a, seminarios y laboratorios. En las clases de teor�a se introducen los conceptos formales y matem�ticos y se muestran ejemplos de su aplicaci�n. En los seminarios los alumnos resuelven peque�os problemas. Cada problema corresponde a uno de los conceptos introducidos en clase de teor�a. En los laboratorios se presenten problemas de mayor complejidad y de car�cter m�s computacional para que los alumnos tengan la oportunidad de poner en pr�ctica los conceptos aprendidos.

Objetivos de aprendizaje

El objetivo de la asignatura es solidificar, profundizar, extender y poner en pr�ctica las competencias obtenidas en lenguajes formales. M�s concretamente, se pretende conseguir que los alumnos desarrollen la capacidad de especificar la sintaxis y sem�ntica de lenguajes de programaci�n simples, verificar formalmente programas, e implementar compiladores para lenguajes de programaci�n sencillos. Asimismo, los estudiantes deber�an desarrollar competencias para entender los modelos de ejecuci�n de diferentes paradigmas de programaci�n e identificar el mejor modelo en diferentes problem�ticas.

 

Prerequisitos

Los conocimientos previos para el seguimiento de la asignatura son nociones de matem�ticas b�sicas adquiridas en la ense�anza secundaria obligatoria y durante los primeros dos cursos de los estudios. En particular, los conocimientos previos requeridos para la asignatura son:

- Nociones algebraicas b�sicas: funciones (inyectivas, biyectivas), conjuntos y operaciones elementales sobre conjuntos, relaciones de equivalencia.
- Nociones b�sicas de l�gica matem�tica: relaciones, predicados, conectivos l�gicos.
- Aritm�tica b�sica.
- Capacidad b�sica para comprender y escribir expresiones matem�ticas a nivel elemental.

Esta asignatura es asume la asimilaci�n de los conceptos aprendidos en lenguajes formales, as� como en L�gica Computacional.

 

Competencias

El objectivo fundamental de la asignatura es que los alumnos adquieran los aspectos fundamentales relacionados con los lenguages ​​de programaci�n: sintaxis, sem�ntica y compilaci�n de programas, as� como nociones de los diferentes paradigmas de programaci�n.

Competencias transversalesCompetencias espec�ficas
Instrumentales

1. Capacidad de razonar a nivel abstracto

2. habilidades cognitivas

3. sentido com�n

Interpersonales

4. Competencia de comunicaci�n

Sist�micas

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
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. Capacidad de entender las diferentes fases de compilaci�n y de los modelos de ejecuci�n
de diferentes paradigmas de programaci�n

Concreci�n por competencias

Competencias a alcanzar en la asignaturaIndicadores de logroProcedimiento de evaluaci�nTemporalizaci�n
Competencias generales

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
1. Capacidad de solucionar problemas abstractos

2. Capacidad de proponer soluciones a problemas

3. Capacidad de proponer soluciones a problemas

4. Soluciones coherentes y bien escritos a las pr�cticas y seminarios

5. Soluciones coherentes a las
pr�cticas y seminarios

6. Soluciones coherentes a las pr�cticas y seminarios

7. Soluciones ingeniosas a problemas presentados
1. Evaluaci�n de pr�cticas, seminarios y del examen final

2. Evaluaci�n de pr�cticas, seminarios y del examen final

3. Evaluaci�n de pr�cticas, seminarios y del examen final

4. Evaluaci�n de pr�cticas y seminarios

5. Evaluaci�n de pr�cticas y seminarios

6. Evaluaci�n de pr�cticas,
seminarios y del examen final

7. Evaluaci�n de pr�cticas, seminarios y del examen final

1. Todo el trimestre
2. Todo el trimestre
3. Todo el trimestre
4. Todo el trimestre
5. Todo el trimestre
6. Todo el trimestre
7. Todo el trimestre

 

Competencias espec�ficas

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. Capacidad de entender los diferentes modelos / paradigmas de computaci�n y de identificar el mejor modelo en diferentes problem�ticas.

 

1. Capacidad de entender expresiones matem�ticas elacionades con la sintaxis y sem�ntica de programas y entender los diferentes pasos de compilaci�n de programas.

2. Capacidad de especificar la sintaxis y sem�ntica, as� como implementar un compilador para lenguajes de programaci�n sencillos

3. Capacidad de entender y elaborar programas en diferentes paradigmas de programaci�n y su uso en diferentes contextos.
1. Evaluaci�n de seminarios y del examen final

2. Evaluaci�n de pr�cticas, seminarios y del examen final

3. Evaluaci�n de pr�cticas, seminarios y del examen final

1. Todo el trimestre
2. Todo el trimestre
3. Todo el trimestre

 

Evaluación

En la evaluaci�n continua se tiene en cuenta cada una de las tres actividades que constituyen la asignatura: clases de teor�a, laboratorios y seminarios:

 Evaluaci�nRecuperable?
Teoria

Evaluaci�n mediante un examen final

Si

Laboratorios

Evaluaci�n con las pr�cticas de programaci�n (LP) y examen final de pr�cticas (LE)

LP: No
LE: Si 

Seminarios

Evaluaci�n mediante resoluci�n de ejercicios de seminario

No 


T: la evaluaci�n de la teor�a mediante un examen final (recuperable en julio)
L: la evaluaci�n de los laboratorios con las pr�cticas de programaci�n (no recuperable) y examen final de pr�cticas (recuperable en julio).
S: la evaluaci�n de los seminarios (no recuperable)

En la evaluaci�n, es necesario aprobar cada una de las tres actividades por separado y la nota final se obtiene haciendo la media ponderada de la siguiente forma:

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

El examen de teor�a se realizar� sobre los contenidos desarrollados en clase de teor�a y los seminarios. Es un examen escrito e individual que eval�a todas las competencias desarrolladas a lo largo de la asignatura. Esta evaluaci�n es obligatoria y debe ser calificada con al menos un 50% para aprobar la asignatura.

En los laboratorios se realizan una serie de pr�cticas que ponen a prueba la capacidad de los alumnos de aplicar la teor�a en forma de programas en un ordenador.
Las pr�cticas se realizan en pareja, de manera que los alumnos tengan que cooperar y saber comunicarse para resolver los problemas. La evaluaci�n de las pr�cticas tambi�n es obligatoria se calificada en 2 partes: una evaluaci�n continuada a lo largo del trimestre en forma de entrega de programas de ordenador (LP), y la otra como una parte del examen final de la asignatura dedicada a temas de pr�cticas (LE). Cada una de las partes deben ser qualificadas como m�nimo con un 50% para aprobar la asignatura. La nota L correspondent a la nota de pr�cticas se obtiene haciendo la media ponderada de la siguiente forma:

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

Los detalles de los plazos de entrega de las pr�cticas a lo largo del trimestre y de las penalizaciones por retraso en su entrega ser� publicada el campus global de la asignatura.

Antes de cada seminario se presentar�n problemas a los alumnos para que ellos los resuelvan en equipos de tres o cuatro antes de la sesi�n, como una preparaci�n previa al seminario. Estos problemas corresponden a conceptos o conocimientos tratados en clase de teor�a. Los alumnos tendr�n tiempo para finalizar sus respuestas a los problemas al comienzo del seminario, despu�s de lo cual pasar�n aleatoriamente a presentar sus soluciones en la pizarra. En la evaluaci�n se tendr� en cuenta la preparaci�n del seminario, la presentaci�n de la soluci�n propuesta, y el aprovechamiento del seminario. La evaluaci�n del trabajo de los seminarios es obligatoria.

En caso de no aprobar la asignatura en la evaluaci�n expuesta en los puntos anteriores, el alumno tiene derecho a una convocatoria en el mes de julio. En la convocatoria de julio solamente ser� posible recuperar la parte del examen de teor�a y la parte del examen final de pr�cticas. Es decir, la parte de pr�cticas de programaci�n y la parte de seminarios no son recuperables en la convocatoria de julio. La nota de esta convocatoria se obtendr� de la misma manera que la nota de la convocatoria ordinaria explicada anteriormente.

 

 

Contenidos

Bloques de contenido

- Bloque de contenido 1. Sintaxis, sem�ntica y verificacion formal de programas
- Bloque de contenido 2. Compilaci�n de programas
- Bloque de contenido 3. Paradigmas de programaci�n

Organizaci�n y concreci�n de los contenidos

- Bloque de contenido 1. Sintaxis, sem�ntica y verificaci�n formal de programas

ConceptosProcedimientosActitudes
1. Gram�ticas BNF, derivaciones, �rboles sint�cticos, parsing

2. Sem�ntica denotacional y sem�ntica axiom�tica

3. Tripletas de Hoare, invariantes y m�todos de verificaci�n formal de programas, model checking
1. Poder especificar formalmente la sintaxis e implementar parsers para lenguajes de programaci�n

2. Poder especificar la sem�ntica de lenguajes de programaci�n.

3. Poder dise�ar especificar propiedades y verificar formalmente un programa
1. Apreciar los diferentes tipos de formalismos �tiles en el �rea de los lenguajes de programaci�n

2. Disponibilidad intentar entender conceptos que inicialmente parecen complejos.

Bloque de contenido 2. Compilaci�n de programas

ConceptosProcedimientosActitudes
1. Compiladores e int�rpretes de lenguajes de programaci�n

2. Estructura de un compilador: an�lisis l�xico, an�lisis sint�ctico, an�lisis sem�ntico, c�digo intermedio, optimizaci�n de c�digo, generaci�n de c�digo.
1. Describir el proceso de ejecuci�n tanto en lenguajes compilados como en lenguajes interpretados.

2. Implementar las diferentes etapas de compilaci�n para un lenguaje imperativo.
1. Disponibilidad intentar entender conceptos que inicialmente parecen complejos.

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

Bloque de contenido 3. Paradigmas de programaci�n

ConceptosProcedimientosActitudes
1. programaci�n l�gica

2. programaci�n funcional

3. programaci�n concurrente
1. Escribir programas l�gicos que resuelven problemas concretos

2. Escribir programas funcionales que resuelven problemas concretos

3. Diferenciar entre los diferentes mecanismos de sincronizaci�n y comunicaci�n disponibles en programaci�n concurrente, y escribir programas usando estos mecanismos para resolver problema concretos.
1. Disponibilidad 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

 

Metodología

Clases de Teor�a

En estas clases se abordan los conceptos te�ricos de los bloques de contenido de la asignatura. Las clases de teor�a consisten en 9 sesiones de dos horas de duraci�n. El profesor llevar� a cabo las explicaciones de los contenidos te�ricos de la asignatura para ello se dispondr� de ordenador, proyector y pizarra como material soporte. Se emplear�n transparencias que servir�n como apuntes de clase para los alumnos. Los conceptos analizados en este tipo de sesiones ser�n utilizados en las dos actividades de aprendizaje restantes de la asignatura; Sesiones de Seminarios I Sesiones de Pr�cticas. El estudiante deber� complementar esta actividad con un lectura detenida de sus propios apuntes y el material adicional que el profesor haya proporcionado. Por ejemplo, un sesi�n de teor�a de 2 horas, convenientemente aprovechadas, requerir� un trabajo adicional fuera del aula de 1 hora por parte del estudiante.

Sesiones de Pr�cticas

En estas sesiones se desarrollan los puntos pr�cticos del bloque de contenido de la asignatura. Estas sesiones se realizan en el laboratorio y tienen una duraci�n de dos horas. El profesor de pr�cticas entregar� un enunciado en la que se explica el desarrollo de la pr�ctica y dar� las directrices necesarias para que los alumnos realicen las comprobaciones y el desarrollo que se les solicite en los enunciados de la pr�ctica. El alumno entregar� una memoria de la pr�ctica al final de la sesi�n, sobre la que el profesor evaluar� que se han desarrollado adecuadamente los conceptos pr�cticos que se han planteado en el enunciado de la pr�ctica. Esta actividad se realiza por parejas y se presupone que contin�a fuera del aula. Las sesiones de pr�ctica estar�n orientadas a cubrir los puntos pr�cticos de los contenidos abordados en la clase de teor�a.

Sesiones de Seminarios

Estas sesiones est�n dedicadas a describir puntos de particular relevancia de los bloques de contenido de la asignatura. Las sesiones de seminarios consisten en sesiones de dos horas de duraci�n. En estas sesiones, el profesor dirigir� y plantear� problemas espec�ficos que ayudar�n a reforzar los conocimientos adquiridos en las sesiones de teor�a y en las pr�cticas de la asignatura. Los alumnos deben entregar las soluciones al comienzo del seminario, y adem�s se pedir� a los alumnos que presenten sus soluciones en la pizarra. Para esta actividad, el profesor dispondr� de ordenador, proyector y pizarra como material soporte. Se podr�n emplear transparencias y en general, cualquier tipo de material que ayude a reforzar los conceptos adquiridos en las sesiones de teor�a de la asignatura. Las actividades ser�n llevadas a cabo en grupos de 3-4 estudiantes.
 
 

 

Recursos

Bibliograf�a b�sica (soporte papel y electr�nico)

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�cticos. Material docente de la asignatura

Web de la asignatura
apuntes
Colecci�n de ejercicios
Enunciados de las pr�cticas

Recursos did�cticos. Materiales y herramientas de soporte

Brief Java Threads Tutorial