Guía docente de la asignatura
(1902) COMPILADORES

Curso académico 2024/2025

  1. Identificación
    1. De la asignatura
    2. Curso Académico
      2024/2025
      Titulación
      GRADO EN INGENIERÍA INFORMÁTICA
      PROGRAMA ACADÉMICO DE SIMULTANEIDAD DE DOBLE TITULACIÓN CON ITINERARIO ESPECÍFICO DE GRADO EN MATEMÁTICAS Y GRADO EN INGENIERÍA INFORMÁTICA
      Nombre de la asignatura
      COMPILADORES
      Código
      1902
      Curso
      SEGUNDO
      TERCERO
      Carácter
      OBLIGATORIA
      Número de grupos
      4
      Créditos ECTS
      6.0
      Estimación del volumen de trabajo
      150.0
      150.0
      Organización temporal
      2º Cuatrimestre
      2º Cuatrimestre
      Idiomas en que se imparte
      Español
      Curso Académico 2024/2025
      Titulación

      GRADO EN INGENIERÍA INFORMÁTICA,

      PROGRAMA ACADÉMICO DE SIMULTANEIDAD DE DOBLE TITULACIÓN CON ITINERARIO ESPECÍFICO DE GRADO EN MATEMÁTICAS Y GRADO EN INGENIERÍA INFORMÁTICA

      Nombre de la asignatura COMPILADORES
      Código 1902
      Curso SEGUNDO TERCERO
      Carácter OBLIGATORIA
      Número de grupos 4
      Créditos ECTS 6.0
      Estimación del volumen de trabajo 150.0 150.0
      Organización temporal 2º Cuatrimestre 2º Cuatrimestre
      Idiomas en que se imparte Español

    3. Del profesorado: Equipo docente
      • CARDENAS VIEDMA, MARIA ANTONIA Docente: GRUPO 2 Coordinación de los grupos: GRUPO 2 Coordinador de la asignatura

        Categoría

        PROFESORES TITULARES DE UNIVERSIDAD

        Área

        CIENCIA DE LA COMPUTACIÓN E INTELIGENCIA ARTIFICIAL

        Departamento

        INGENIERÍA DE LA INFORMACIÓN Y LAS COMUNICACIONES

        Correo electrónico / Página web / Tutoría electrónica

        mariancv@um.es Tutoría electrónica:

        Teléfono, horario y lugar de atención al alumnado

        Duración:
        C2
        Día:
        Miércoles
        Horario:
        10:00-12:00
        Lugar:
        (Sin Extensión), Facultad de Informática B1.1.043
        Observaciones:
        Despacho 1.31
        Duración:
        C1
        Día:
        Miércoles
        Horario:
        12:00-13:30
        Lugar:
        (Sin Extensión), Facultad de Informática B1.1.043
        Observaciones:
        Despacho 1.31
        Duración:
        C1
        Día:
        Jueves
        Horario:
        12:00-13:30
        Lugar:
        (Sin Extensión), Facultad de Informática B1.1.043
        Observaciones:
        Despacho 1.31
        Duración:
        C2
        Día:
        Martes
        Horario:
        11:00-12:00
        Lugar:
        (Sin Extensión), Facultad de Informática B1.1.043
        Observaciones:
        Despacho 1.31
      • BELTRAN LOPEZ, PEDRO Docente: GRUPO 1, GRUPO 2 Coordinación de los grupos:

        Categoría

        INVESTIGADOR/A LICENCIADO/A

        Área

        No consta

        Departamento

        INGENIERÍA DE LA INFORMACIÓN Y LAS COMUNICACIONES

        Correo electrónico / Página web / Tutoría electrónica

        pedro.beltranl@um.es Tutoría electrónica: No

        Teléfono, horario y lugar de atención al alumnado

      • GARCIA MARTINEZ, RAMON Docente: GRUPO 3 Coordinación de los grupos:

        Categoría

        PROFESOR SUST. POR REDUCCIÓN ACTIVIDAD DOCENTE PROFESOR TC

        Área

        CIENCIA DE LA COMPUTACIÓN E INTELIGENCIA ARTIFICIAL

        Departamento

        INGENIERÍA DE LA INFORMACIÓN Y LAS COMUNICACIONES

        Correo electrónico / Página web / Tutoría electrónica

        ramongar@um.es Tutoría electrónica: No

        Teléfono, horario y lugar de atención al alumnado

      • GIL PEREZ, MANUEL Docente: GRUPO 1, GRUPO 2, GRUPO 3, GRUPO PCEO MATE+INFORM Coordinación de los grupos:

        Categoría

        PROFESORES TITULARES DE UNIVERSIDAD

        Área

        CIENCIA DE LA COMPUTACIÓN E INTELIGENCIA ARTIFICIAL

        Departamento

        INGENIERÍA DE LA INFORMACIÓN Y LAS COMUNICACIONES

        Correo electrónico / Página web / Tutoría electrónica

        mgilperez@um.es http://webs.um.es/mgilperez Tutoría electrónica:

        Teléfono, horario y lugar de atención al alumnado

        Duración:
        A
        Día:
        Martes
        Horario:
        17:00-18:30
        Lugar:
        868887645, Facultad de Informática B1.1.025
        Observaciones:
        Despacho 1.14.
        Duración:
        A
        Día:
        Lunes
        Horario:
        11:30-13:00
        Lugar:
        868887645, Facultad de Informática B1.1.025
        Observaciones:
        Despacho 1.14.
      • KIM, DENISSE MISOO Docente: GRUPO 1, GRUPO PCEO MATE+INFORM Coordinación de los grupos:

        Categoría

        INVESTIGADOR/A LICENCIADO/A

        Área

        No consta

        Departamento

        INGENIERÍA DE LA INFORMACIÓN Y LAS COMUNICACIONES

        Correo electrónico / Página web / Tutoría electrónica

        denissemisoo.kim@um.es Tutoría electrónica: No

        Teléfono, horario y lugar de atención al alumnado

      • MARTINEZ GRACIA, EDUARDO Docente: GRUPO 1, GRUPO 3, GRUPO PCEO MATE+INFORM Coordinación de los grupos: GRUPO 1, GRUPO PCEO MATE+INFORM,

        Categoría

        PROFESORES TITULARES DE ESCUELAS UNIVERSITARIAS

        Área

        CIENCIA DE LA COMPUTACIÓN E INTELIGENCIA ARTIFICIAL

        Departamento

        INGENIERÍA DE LA INFORMACIÓN Y LAS COMUNICACIONES

        Correo electrónico / Página web / Tutoría electrónica

        edumart@um.es Tutoría electrónica:

        Teléfono, horario y lugar de atención al alumnado

        Duración:
        A
        Día:
        Lunes
        Horario:
        16:00-19:00
        Lugar:
        868884833, Facultad de Informática B1.1.015 (DESPACHO PROF. EDUARDO MARTÍNEZ GRACIÁ)
        Observaciones:
        Se puede solicitar una tutoría en otro horario distinto escribiendo a edumart@um.es.
      • MARTINEZ SANCHEZ, ANTONIO Docente: GRUPO 3 Coordinación de los grupos: GRUPO 3

        Categoría

        INVESTIGADOR/A "RAMON Y CAJAL"

        Área

        CIENCIA DE LA COMPUTACIÓN E INTELIGENCIA ARTIFICIAL

        Departamento

        INGENIERÍA DE LA INFORMACIÓN Y LAS COMUNICACIONES

        Correo electrónico / Página web / Tutoría electrónica

        anmartinezs@um.es Tutoría electrónica:

        Teléfono, horario y lugar de atención al alumnado

        Duración:
        C2
        Día:
        Jueves
        Horario:
        11:00-13:00
        Lugar:
        868884616, Facultad de Informática B1.0.000
        Observaciones:
        Se requiere cita previa (puede ser pedida a través del Aula Virtual o correo electrónico). Las tutorías pueden ser tanto presenciales en el despacho como virtuales vía Zoom.
        Duración:
        C1
        Día:
        Jueves
        Horario:
        11:00-13:00
        Lugar:
        868884616, Facultad de Informática B1.0.000
        Observaciones:
        Se requiere cita previa (puede ser pedida a través del Aula Virtual o correo electrónico). Las tutorías pueden ser tanto presenciales en el despacho como virtuales vía Zoom.

  2. Presentación
  3. La asignatura se centra en las técnicas básicas de análisis y síntesis dentro del proceso general de construcción de compiladores. Se pretende que su estudio dé al alumno la capacidad para diseñar un traductor completo para un lenguaje de programación dado, incidiendo en el aprendizaje y uso de las herramientas adecuadas para cada fase del proceso.

    Para ello, se dará una visión general sobre la organización de los programas traductores, ofreciendo las técnicas necesarias para la resolución de problemas que aparecen a la hora de diseñar un traductor de un lenguaje.

    Aparte de servir como una introducción general sobre compiladores e intérpretes, se intentará estudiar a fondo la fase de análisis del proceso de compilación, es decir, la fase en que se divide al programa fuente en los elementos que lo componen y se crea una representación intermedia, haciendo énfasis especial en las fases de análisis léxico,el estudio de las gramáticas libres de contextoy las diferentes técnicas para realizar el análisis sintáctico.Además, se estudiarán las nociones básicas para realizar una traducción dirigida por la sintaxis,las diferentes opciones de representación intermedia para un programa fuente y la traducción desde un lenguaje fuente a código intermedio o ensamblador. Se introducirán los principales conceptos del análisis semántico, incluyendo las técnicas de comprobación de tiposen un compilador. Finalmente, se abordarán las cuestiones fundamentales que se presentan a la hora de generar código.

  4. Condiciones de acceso a la asignatura
    1. Incompatibilidades
    2. No constan

    3. Requisitos
    4. No constan

    5. Recomendaciones
    6. Se recomienda haber cursado la asignatura de 2º curso Autómatas y Lenguajes Formales.

      Por otro lado, serán necesarios conocimientos en el lenguaje de programación C.

  5. Competencias
    1. Competencias básicas
      • CB2: Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio
      • CB5: Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía

    2. Competencias de la titulación
      • CGII1: Capacidad de análisis y síntesis.
      • CGII2: Capacidad de organización y planificación.
      • CGII3: Comunicación oral y escrita en la lengua nativa.
      • CGII5: Conocimientos de informática relativos al ámbito de estudio.
      • CGII7: Resolución de problemas.
      • CGII8: Toma de decisiones.
      • CGII9: Trabajo en equipo.
      • CGII14: Razonamiento crítico.
      • CGII16: Aprendizaje autónomo.
      • CGII17: Adaptación a nuevas situaciones.
      • CGII22: Motivación por la calidad.
      • CGUM1: Ser capaz de expresarse correctamente en español en su ámbito disciplinar.
      • CGUM3: Ser capaz de gestionar la información y el conocimiento en su ámbito disciplinar, incluyendo saber utilizar como usuario las herramientas básicas en TIC.
      • CGUM6: Capacidad para trabajar en equipo y para relacionarse con otras personas del mismo o distinto ámbito profesional.
      • CEII8: Conocimiento de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que les doten de una gran versatilidad para adaptarse a nuevas situaciones.
      • CEII9: Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.
      • CR6: Conocimiento y aplicación de los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos.
      • CR7: Conocimiento, diseño y utilización de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de un problema.

    3. Competencias transversales y de materia

      No constan

  6. Contenidos
    1. Teoría
    2. Bloque 1: Teórico

      Tema 1: Traductores e intérpretes

      Tema 2: Análisis de léxico

      Tema 3: Análisis sintáctico

      Conceptos generales; Análisis LL; Análisis LR

      Tema 4: Análisis semántico y traducción dirigida por la sintaxis

      Tema 5: Generación de código

    3. Prácticas
      • Práctica 1: Manejo de la herramienta Flex

        Aprendizaje

        Relacionado con:
        • Tema 2: Análisis de léxico
      • Práctica 2: Diseño de un analizador léxico con Flex

        Desarrollo

        Relacionado con:
        • Tema 2: Análisis de léxico
      • Práctica 3: Manejo de la herramienta Bison

        Aprendizaje

        Relacionado con:
        • Tema 3: Análisis sintáctico
      • Práctica 4: Diseño de un analizador sintáctico con Bison

        Desarrollo

        Relacionado con:
        • Tema 3: Análisis sintáctico
      • Práctica 5: Manejo de atributos y acciones semánticas en Bison

        Aprendizaje

        Relacionado con:
        • Tema 3: Análisis sintáctico
        • Tema 4: Análisis semántico y traducción dirigida por la sintaxis
        • Tema 5: Generación de código
      • Práctica 6: Diseño del módulo de generación de código intermedio y/o ensamblador con Bison

        Desarrollo

        Relacionado con:
        • Tema 3: Análisis sintáctico
        • Tema 4: Análisis semántico y traducción dirigida por la sintaxis
        • Tema 5: Generación de código

  7. Actividades Formativas
  8. Actividad Formativa Metodología Horas Presencialidad
    A1: Actividades con grupo grande de alumnos entre las que se encuentran la presentación en el aula de los conceptos propios de la materia mediante metodología expositiva con lecciones magistrales participativas y medios audiovisuales. También se contemplan en este grupo las actividades de evaluación teórico prácticas.
    • Explicación en clase de conceptos teóricos incentivando la participación del alumno con ejercicios y cuestiones planteados con ese fin.
    • Evaluación final con un examen teórico/práctico. 
    24.0 40.0
    A2: Actividades con grupo mediano en el aula de resolución de problemas, seminarios, charlas, ejercicios basados en el aprendizaje orientado a proyectos, estudios de casos, exposición y discusión de trabajos relativas al seguimiento individual y/o grupal de adquisición de las competencias.

    Resolución de ejercicios en grupo.

    7.5 12.5
    A3: Actividades con grupo pequeño en el laboratorio relacionadas con la componente práctica de las asignaturas, desarrollo de trabajos con equipo técnico especializado, desarrollo de programas, etc.
    • Explicación de las herramientas necesarias para el desarrollo de las prácticas (Flex y Bison).
    • Desarrollo de la práctica por módulos: análisis de léxico, sintáctico, semántico y generación de código.
    22.5 37.5
    A4: Tutorías individualizadas o en grupo muy pequeño orientadas a la dirección, supervisión y asesoría por parte del un profesor de la asignatura, del tutor en el caso de Trabajo Fin de Grado, supervisión del tutor de empresa en el caso de Prácticas de Empresa que de forma periódica constate y redirija el trabajo del alumno hacia la consecución de los objetivo marcados.

    Resolución de dudas en grupo.

    6.0 10.0
    A5: Estudio y trabajo autónomo orientado a la asimilación de contenidos, realización de problemas, ejercicios o redacción de informes técnicos o memorias descriptivas, desarrollo de proyectos o prácticas individuales o en

    Estudio individual para afianzar los conceptos teóricos y realización de las tareas prácticas comenzadas en los laboratorios y orientadas a la elaboración del compilador.

    90.0 0.0
    Totales 150,00

  9. Horario de la asignatura
  10. https://www.um.es/web/estudios/grados/informatica/2024-25#horarios

  11. Sistemas de Evaluación
  12. Identificador Denominación del instrumento de evaluación Criterios de Valoración Ponderación
    IE1 Examen teórico-práctico. En este instrumento incluimos desde el tradicional examen escrito o tipo test hasta los exámenes basados en resolución de problemas, pasando por los de tipo mixto que incluyen cuestiones cortas o de desarrollo teórico junto con pequeños problemas. También se incluye aquí la consideración de la participación activa del alumno en clase, la entrega de ejercicios o realización de pequeños trabajos escritos y presentaciones.

    EXAMEN FINAL

    En el examen se valorarán los conocimientos teóricos del alumno y su capacidad para relacionarlos con las prácticas, a través de ejercicios y cuestiones que pueden incluir preguntas tipo test, preguntas cortas y problemas.

    Es necesario aprobar esta parte para poder superar la asignatura en cada convocatoria.

    Para obtener una calificación diferente a "No Presentado" en la asignatura será necesario presentarse físicamente al examen de teoría en la fecha y hora establecidos en el pertinente llamamiento, rellenar los datos personales, firmar y entregar el examen al profesor.

    50.0
    IE2 Informe técnico. En este instrumento incluimos los resultados de actividades prácticas, o de laboratorio, junto con sus memorias descriptivas. Los resúmenes del estado del arte o memorias de investigación sobre temas concretos. Y la posibilidad de realizar entrevistas personales o presentaciones de los trabajos realizados también entran en esta categoría.

    REALIZACIÓN DE UN PROGRAMA TRADUCTOR

    Se irá desarrollando por partes en las sesiones presenciales de prácticas a lo largo del curso, en grupos de dos alumnos, aunque se evaluará únicamente el resultado final del trabajo.

    Para superar esta parte será imprescindible:

    1. Superar un control práctico que demuestre que el alumno ha alcanzado las competencias mínimas para el desarrollo de las prácticas. En caso de superarlo, la nota será la obtenida en la realización del programa traductor. En caso de no superarlo, las prácticas se considerarán suspensas.
    2. Implementar los objetivos mínimos indicados en la documentación de la práctica, que los profesores publicarán a principio de curso.
    3. Que el programa funcione sin errores de compilación ni de ejecución.
    4. Redactar una documentación coherente en la que se expliquen las decisiones de diseño para la realización de la práctica, las estructuras de datos usadas.
    5. Superar, en caso de considerarse necesaria, una entrevista en la que el alumno defienda tanto el diseño como la implementación de la práctica.

    Es necesario aprobar esta parte para poder superar la asignatura en cada convocatoria.

    Para obtener una calificación diferente a "No Presentado" en la asignatura será necesario realizar la entrega de la memoria de la práctica final.

    En caso de entregar el proyecto y no presentarse a la entrevista (si es convocado), la nota de prácticas será "Suspenso".

    50.0

  13. Fechas de exámenes
  14. https://www.um.es/web/estudios/grados/informatica/2024-25#examenes

  15. Resultados del Aprendizaje
  16. Los objetivos formativos son:

    • Conocer la evolución de los lenguajes de programación entendiendo cómo esta historia ha conducido a los paradigmas actuales. Distinguir, al menos, una característica distintiva de cada uno de los paradigmas y compararlos.
    • Conocer la importancia y el poder de abstracción del concepto de máquina virtual, así como los beneficios de los lenguajes intermedios en el proceso de compilación.
    • Ser capaces de evaluar rendimiento vs portabilidad.
    • Ser capaces de comparar y contrastar los modelos de ejecución interpretados y compilados, conociendo ventajas de cada uno.
    • Conocer las fases de traducción de programas desde el código fuente al ejecutable y los ficheros producidos en esas fases, distinguiendo entre traducción dependiente e independiente de la máquina y localizando dónde se hace evidente esta diferencia dentro del proceso de traducción.
    • Reconocer los modelos formales subyacentes tales como autómatas finitos y autómatas de pila y su conexión con la definición de lenguajes a partir de expresiones regulares y gramáticas.
    • Ser capaces de usar las técnicas y herramientas explicadas en otros ámbitos distintos al de los compiladores.
    • Conocer cómo un sistema computacional usa registros de activación para manejar bloques de programas y sus datos.
    • Conocer el valor de los modelos de declaración. Ser capaces de identificar y describir las propiedades de una variable y discutir la incompatibilidad de tipos. Distinguir diferentes formas de ligadura, visibilidad, ámbito y manejo del tiempo de vida. Ser capaces de evaluar opciones en este último.
    • Conocer cómo los mecanismos de abstracción soportan la creación de componentes software reusables y ser conscientes de la importancia de las abstracciones.
    • Ser capaces de razonar acerca de la eficacia de la optimización.
    • Ser capaces de diseñar el back-end de un compilador para un lenguaje de programación, haciendo uso de las distintas técnicas explicadas y también de las herramientas automáticas para generar algunos de los módulos.

  17. Bibliografía
  18. Bibliografía complementaria

  19. Observaciones
  20. Esta asignatura no se encuentra vinculada de forma directa con los Objetivos de Desarrollo Sostenible

    CONSIDERACIONES ACERCA DE LA EVALUACIÓN

    La nota que aparecerá en el acta de cada convocatoria responderá al siguiente criterio:

    Para poder superar la asignatura en cualquiera de las convocatorias (febrero, junio, julio), el alumno deberá aportar al profesor todas aquellas evidencias necesarias para poder realizar una evaluación global. Para esta asignatura se consideran evidencias las dos siguientes:

    • Presentarse físicamente al examen de teoría en la fecha y hora establecidos en el pertinente llamamiento, rellenar sus datos, firmar y entregar el examen al profesor.
    • Superar el control de prácticas y realizar la entrega de la práctica final. El cauce para hacerlo será el depósito de la memoria y los ficheros con el código de la práctica en el aula virtual.

    En este caso y para cada convocatoria:

    • Si el estudiante ha aportado todas las evidencias de evaluación que permitan una calificación global de la asignatura, se consignará en el acta la calificación global que proceda tras aplicarle los criterios de evaluación: Suspenso, Aprobado, Notable, Sobresaliente, Matricula de Honor Para obtener una nota distinta de "Suspenso" será necesario aprobar ambas partes (teoría y prácticas).
    • Si el estudiante NO ha aportado TODAS las evidencias de evaluación que permitan una calificación global de la asignatura, se consignará en el acta la calificación de "No Presentado". En caso de entregar el proyecto y no realizar el control o no presentarse a la entrevista (si es convocado), la nota de prácticas será "Suspenso".

    Si el estudiante sólo ha aportado una de las dos evidencias necesarias para aprobar y ha superado la parte correspondiente, la calificación de dicha parte se guardará para las convocatorias extraordinarias siguientes (julio y enero). Una vez que la asignatura empiece a impartirse de nuevo, el alumno perderá la calificación favorable relacionada con esa parte.

    En el caso de plagio, copia o utilización de medios fraudulentos en las diferentes pruebas, se aplicará el artículo 23 del Reglamento de Convocatoria, Evaluación y Actas de la Universidad de Murcia, que conllevará suspender la prueba y, en su caso, podrá ser objeto de sanción previa apertura de expediente académico. Por otro lado, perderá el derecho a conservar para posteriores convocatorias la calificación favorable de cualquier otra evidencia presentada.

    NECESIDADES EDUCATIVAS ESPECIALES

    Aquellos estudiantes con discapacidad o necesidades educativas especiales podrán dirigirse al Servicio de Atención a la Diversidad y Voluntariado (ADYV - https://www.um.es/adyv) para recibir orientación sobre un mejor aprovechamiento de su proceso formativo y, en su caso, la adopción de medidas de equiparación y de mejora para la inclusión, en virtud de la Resolución Rectoral R-358/2016. El tratamiento de la información sobre este alumnado, en cumplimiento con la LOPD, es de estricta confidencialidad.

    REGLAMENTO DE EVALUACIÓN DE ESTUDIANTES

    El artículo 8.6 del Reglamento de Evaluación de Estudiantes (REVA) prevé que "salvo en el caso de actividades definidas como obligatorias en la guía docente, si el o la estudiante no puede seguir el proceso de evaluación continua por circunstancias sobrevenidas debidamente justificadas, tendrá derecho a realizar una prueba global".

    Se recuerda asimismo que el artículo 22.1 del Reglamento de Evaluación de Estudiantes (REVA) estipula que "el o la estudiante que se valga de conductas fraudulentas, incluida la indebida atribución de identidad o autoría, o esté en posesión de medios o instrumentos que faciliten dichas conductas, obtendrá la calificación de cero en el procedimiento de evaluación y, en su caso, podrá ser objeto de sanción, previa apertura de expediente disciplinario".