Competencias del título |
Código
|
Competencias de la titulación
|
A28 |
Capacidad de identificar y analizar problemas, y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales. |
A32 |
Capacidad de desarrollar procesadores específicos y sistemas empotrados, así como desarrollar y optimizar el software de dichos sistemas. |
A34 |
Capacidad de diseñar e implementar software de sistemas y de comunicaciones. |
A39 |
Capacidad para tener un conocimiento profundo de los principios fundamentales y modelos de la computación y saberlos aplicar para interpretar, seleccionar, valorar, modelar, y crear nuevos conceptos, teorías, usos y desarrollos tecnológicos relacionados con la informática. |
A40 |
Capacidad para conocer los fundamentos teóricos de los lenguajes de programación y las técnicas de procesamiento léxico, sintáctico y semántico asociadas, y saber aplicarlas para la creación, diseño y procesamiento de lenguajes. |
B1 |
Capacidad de resolución de problemas |
B3 |
Capacidad de análisis y síntesis |
C2 |
Dominar la expresión y la comprensión de forma oral y escrita de un idioma extranjero. |
C4 |
Desarrollarse para el ejercicio de una ciudadanía abierta, culta, crítica, comprometida, democrática y solidaria, capaz de analizar la realidad, diagnosticar problemas, formular e implantar soluciones basadas en el conocimiento y orientadas al bien común. |
C6 |
Valorar críticamente el conocimiento, la tecnología y la información disponible para resolver los problemas con los que deben enfrentarse. |
Resultados de aprendizaje |
Competencias de materia (Resultados de aprendizaje) |
Competencias de la titulación |
Conocer los conceptos teóricos básicos en los que se basan los compiladores. Diseñar e implementar cada una de las fases precisas para la implementación de un compilador. Conocer las distintas herramientas disponibles para la implementación de compiladores y manejar algunas de las más habituales. El estudiane también sabrá verificar el funcionamiento del procesador del lenguaje. |
A28 A40
|
|
|
Partiendo de la base teórica de la computación, se plantean diferentes técnicas y herramientas (con una orientación muy práctica) para el procesamiento del lenguaje. |
A39
|
|
|
Saber optimizar el código objeto en función de la plataforma que lo va a ejecutar. Saber elegir el tipo de optimización según la máquina objeto y su arquitectura. |
A32 A34
|
|
|
Saber analizar y diagnosticar el caso concreto, el objetivo, para el que se precisa un reconocedor del lenguaje. El estudiante también será capaz de documentarse, sintetizar y adaptar la solución con un enfoque totalmente práctico pero basado en conocimiento. |
|
B1 B3
|
C2 C4 C6
|
Contenidos |
Tema |
Subtema |
Tema I. Introducción |
1.1 Estructura de un compilador.
1.2 Ejemplo de las fases de un compilador
|
Tema II. Lenguajes y gramáticas |
2.1 Notación y clasificación de Chomsky.
2.2 Gramáticas de contexto libre (GCL) y notación BNF.
2.3 Mejora y simplificación de gramáticas. |
Tema III. Análisis Léxico |
3.1 Tipos de máquinas reconocedoras o autómatas.
3.2 Autómatas Finitos.
3.3 Conversión entre gramática regular, expresión regular y autómata finito.
3.4 Implementación de autómatas. |
Tema IV. Análisis Sintáctico (Parsing) |
4.1 Máquinas teóricas, mecanismos con retroceso
4.2 Algoritmos sin retroceso.
4.2.1 Análisis sintáctico ascendente por precedencia simple.
4.2.2 Analizadores descendentes LL(K).
4.2.3 Analizadores ascendentes LR(k).
4.2.4 Generador de analizadores sintácticos YACC.
|
Tema V. Análisis Semántico |
5.1 Definiciones dirigidas por la sintáxis.
5.2 Esquema de traducción.
5.3 Comprobaciones en tiempo de compilación.
|
Tema VI. Generación de Código |
6.1 Lenguajes intermedios.
6.2 Generación de código intermedio.
6.3 Generación de código desde lenguaje intermedio. |
Tema VII. Optimización de Código |
7.1 Algoritmo de Nakata.
7.2 Lazos en los grafos de flujo.
7.3 Análisis global del flujo de datos.
7.4 Solución iterativa de las ecuaciones de flujo de datos.
|
Tema VIII. Errores |
8.1 Tipos de errres
8.2 Recuperación de errores léxico-gráficos. |
Tema IX. Intérpretes y Complementos |
9.1 Estructura de un intérprete actual.
9.2 Arquitectura neutral de Java. |
Planificación |
Metodologías / pruebas |
Horas presenciales |
Horas no presenciales / trabajo autónomo |
Horas totales |
Sesión magistral |
21 |
31.5 |
52.5 |
Prueba objetiva |
3 |
18 |
21 |
Trabajos tutelados |
7 |
17.5 |
24.5 |
Prácticas de laboratorio |
14 |
14 |
28 |
|
Atención personalizada |
24 |
0 |
24 |
|
(*)Los datos que aparecen en la tabla de planificación són de carácter orientativo, considerando la heterogeneidad de los alumnos |
Metodologías |
Metodologías |
Descripción |
Sesión magistral |
En estas sesiones se analizarán en profundidad los conceptos teóricos y principales técnicas para la implementación de un reconocedor del lenguaje. |
Prueba objetiva |
Se realizará un examen al final del cuatrimestre y su correspondiente 2ª oportunidad. Este examen se centrará principalmente en los aspectos teoricos y ejercicios asociados. Sin embargo, podrá preguntarse alguna cuestión relacionada con las prácticas de implementación realizadas. |
Trabajos tutelados |
Se llevará a cabo un proyecto a propuesta de un grupo de 2 estudiantes del que se realizará un seguimiento en el horario de trabajo en grupo.
|
Prácticas de laboratorio |
Se llevarán a cabo pequeñas prácticas sobre los diferentes temas de la asignatura que se irán desarrollando en las sesiones magistrales. Algunas de ellas serán ejercicios de desarrollo y otras de implementación. |
Atención personalizada |
Metodologías
|
Sesión magistral |
Prácticas de laboratorio |
Trabajos tutelados |
|
Descripción |
Especialmente en el caso del proyecto a desarrollar, organizado por grupos de alumnos, se realizará un seguimiento. A ello se dedicarán principalmente las horas de trabajo en grupo reducido. |
|
Evaluación |
Metodologías
|
Descripción
|
Calificación
|
Prácticas de laboratorio |
Se llevarán a cabo pequeñas prácticas sobre los diferentes temas de la asignatura que se irán desarrollando en las sesiones magistrales. Algunas de ellas serán ejercicios de desarrollo y otras de implementación. El porcentaje por asistencia y entrega de estas pequeñas prácticas es testimonial (10%). El 20% restante corresponde al desarrollo del proyecto. |
30 |
Prueba objetiva |
Se realizará un examen al final del cuatrimestre y su correspondiente 2ª oportunidad. Este examen se centrará principalmente en los aspectos teoricos y ejercicios asociados. Sin embargo, podrá preguntarse alguna cuestión relacionada con las prácticas de implementación realizadas. |
50 |
Trabajos tutelados |
Se llevará a cabo un proyecto a propuesta de un grupo de 2 estudiantes del que se realizará un seguimiento en el horario de trabajo en grupo. |
20 |
|
Observaciones evaluación |
En cualquier caso, es preciso aprobar las dos partes (prueba objetiva y prácticas-trabajos). En caso contrario, la máxima nota que se podrá conseguir es un 4.5. IMPORTANTE: El 40% de la nota lo aporta el proyecto que propondrán los grupos, el 20% corresponde al seguimiento y el 20% a la entrega final.
|
Fuentes de información |
Básica
|
|
|
Complementária
|
|
"Compiladores:
Principios, técnicas y herramientas", Aho, A.V.; Lam M.; Sethi, R. ;
Ullman, J.D., Addison-Wesley, Reading, Massachussetts 2008. "Construcción de
compiladores. Principios y Práctica",
Louden D. K., Paraninfo Thomson Learning, 2004. Garrido, A. ; Iñesta J.M.
; Moreno F. ; Pérez J.A. [2004] Diseño de compiladores, Publicaciones
Universidad de Alicante. "Compiladores,
teoría y construcción", Sanchis, F.J.;
Galán, J.A., Ed. Paraninfo, 1987. "The theory of parsing, translation
and compiling" (I y II), Aho, A.V.; Ullman, J.D., Prentice-Hall, 1972. "Principles of compiler design", Aho, A.V.; Ullman J.D., Addison-Wesley, 1977. "ntroducción a la teoría de autómatas, lenguajes y
computación", Hopcroff, J.E. ; Motwani
R. ; Ullman, J. D. [2002] I, Addison-Wesley, 2002 "Compiler design in C", Allen I.; Holub, Prentice-Hall, 1991. "Compiladores e
Intérpretes", Sánchez, G.; Valverde
J.A., Ed. Díaz de Santos, 1984. “Languages and machines”, Sudkamp T.A., Addison-Wesley, 1994 |
Recomendaciones |
Asignaturas que se recomienda haber cursado previamente |
Diseño de los Lenguajeses de Programación/614G01065 |
|
Asignaturas que se recomienda cursar simultáneamente |
|
Asignaturas que continúan el temario |
Teoría de la computación/614G01039 |
|
Otros comentarios |
Aunque tiene relación con otra asignaturas, está fuertemente relacionada con "Diseño de Lenguajes de Programación", que la complementa, y "Teoría de la Computación", que es la base inicial para poder afrontar los contenidos. |
|