Guía docente de la asignatura

Procesadores de Lenguajes (Especialidad Computación y Sistemas Inteligentes)

Curso 2021 / 2022
Fecha última actualización: 14/06/2021
Fecha de aprobación: 14/06/2021

Grado

Grado en Ingeniería Informática

Rama

Ingeniería y Arquitectura

Módulo

Formación de Especialidad 1: Computación y Sistemas Inteligentes

Materia

Modelos de Computación

Curso

4

Semestre

1

Créditos

6

Tipo

Obligatoria

Profesorado

Teoría

  • Ramón López-Cózar Delgado. Grupos: A

Prácticas

  • Salvador Villena Morales. Grupos: 1 y 2

Tutorías

Ramón López-Cózar Delgado

rlopezc@ugr.es
  • Segundo semestre
    • Martes de 10:30 a 13:30 (Aula Inf 1 F. Bbaa)
    • Miércoles de 10:30 a 13:30 (Etsiit Desp. 26 3ª Planta)
  • Primer semestre
    • Martes de 10:30 a 13:30 (Etsiit Desp. 26 3ª Planta)
    • Miércoles de 10:30 a 13:30 (Etsiit Desp. 26 3ª Planta)

Salvador Villena Morales

svillena@ugr.es
  • Primer semestre
    • Jueves de 10:30 a 11:30 (Etsiit 3ª P Despacho 3)
    • Lunes de 11:30 a 13:30 (Etsiit 3ª P Despacho 3)
    • Martes de 9:30 a 11:30 (Etsiit 3ª P Despacho 3)
    • de 11:30 a 12:30 (Etsiit 3ª P Despacho 3)
  • Segundo semestre
    • Jueves de 11:30 a 13:30 (Etsiit 3ª P Despacho 3)
    • Lunes de 9:30 a 11:30 (Etsiit 3ª P Despacho 3)
    • de 11:30 a 13:30 (Etsiit 3ª P Despacho 3)

Prerrequisitos y/o Recomendaciones

No es necesario que los alumnos tengan aprobadas asignaturas, materias o módulos previos como requisito indispensable para cursar este módulo. No obstante se recomienda la superación de los contenidos y adquisición e competencias de las materias de formación básica, de rama y de la asignatura de Modelos Avanzados de Computación.

Breve descripción de contenidos (Según memoria de verificación del Grado)

  • Fundamentos teóricos de los lenguajes de programación.
  • Arquitectura de un Procesador de Lenguaje.
  • Proceso de análisis (léxico, sintáctico y semántico).
  • Proceso de síntesis (lenguajes intermedios, organización de la memoria y generación de código objeto).

Competencias asociadas a materia/asignatura

Competencias generales

  • CG08 - 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.
  • CG09 - 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.

Resultados de aprendizaje (Objetivos)

  • Conocer los fundamentos teóricos de los lenguajes de programación, evolución de éstos y paradigmas.
  • Conocer el concepto de máquina virtual y de procesador de lenguaje como abstracción de un traductor.
  • Reconocer los modelos formales subyacentes tales como autómatas finitos, expresiones regulares, autómatas de pila y su relación con la definición de un lenguaje definido por gramáticas libres de contexto.
  • Conocer las fases necesarias para la construcción de un procesador de lenguaje, distinguiendo los casos particulares para un compilador o un intérprete y adquirir destreza para la aplicación del proceso de abstracción léxica para la construcción óptima de procesadores de lenguajes.
  • Ser capaces de comparar y contrastar los modelos de ejecución interpretados y compilados, estableciendo una comparativa de ambos modelos.
  • Ser capaces de usar las técnicas y herramientas automáticas para la construcción de procesadores de lenguajes.
  • Ser capaces de diseñar la etapa de síntesis (back-end) de un compilador para un lenguaje de programación, haciendo uso de las distintas técnicas explicadas y también de herramientas automáticas.
  • Ser capaces de organizar la información en la memoria en función de las características del lenguaje fuente y lenguaje objeto a la hora de construir un compilador o intérprete.
  • Ser capaces de razonar acerca de la eficacia de la optimización en generación de código objeto.

Programa de contenidos teóricos y prácticos

Teórico

  1. Procesadores de lenguajes.
    • Conceptos previos.
    • Aplicación de los traductores.
    • Visión general de un traductor.
    • Tipos y evolución de los traductores.
    • Arquitectura de procesadores de lenguajes.
  2. Análisis de Léxico.
    • Descripción funcional.
    • Conceptos de token.
    • lexema  y patrón.
    • Fundamentos: álgebra de lenguajes.
    • Tratamiento de errores.
  3. Análisis Sintáctico
    • Descripción funcional
    • Fundamentos. Gramática libres de contexto
    • Métodos de análisis sintáctico descendentes
    • Métodos de análisis sintáctico ascendentes
    • Detección y recuperación de los errores.
  4. Análisis Semántico
    • Descripción funcional
    • Tablas de símbolos
    • Gramática con atributos
    • Comprobaciones semánticas.
  5. Generación de Código Intermedio.
    • Lenguaje intermedio y tipos de lenguajes intermedios
    • Lenguaje intermedio de cuartetos. Proposiciones
    • Generación de código en cuartetos
    • Máquinas abstracta.
  6. Organización de la Memoria.
    • Introducción a la gestión de memoria.
    • Organización de la memoria durante la ejecución.
    • Organización estática.
    • Organización dinámica basada en pila (stack).
    • Organización dinámica basada en montículo (heap).
    • Mecanismos de paso de parámetros.
  7. Intérpretes.
    • Función  del intérprete.
    • Intérpretes iterativos.
    • Intérpretes recursivos.
  8. Generación de Código Objeto
    • Bloques básicos.
    • Generador de código simple.
    • Representación de bloques básicos con GDA (Gráfos dirigidos acíclicos).
    • Generadores de generadores de código (GGC).
  9. Optimización de Código.
    • Descripción funcional.
    • Tipos de optimizadores.
    • Organización de los compiladores optimizados.
    • Principales fuentes de optimización.
    • Análisis global del flujo de datos.

Práctico

  1. Seminario práctico 1: Utilización del Lex/Flex.
  2. Seminario práctico 2: Utilización del Yacc/Bison.
  3. Seminario práctico 3: Introducción de acciones semánticas en Yacc/Bison.
  • Práctica 1. Especificación y diseño de un lenguaje orientado al problema.
  • Práctica 2. Implementación del analizador léxico usando Lex/Flex.
  • Práctica 3. Implementación del analizador sintáctico usando Yacc/Bison.
  • Práctica 4. Implementación del analizador semántico.
  • Práctica 5. Implementación del generador de código intermedio.

Bibliografía

Bibliografía fundamental

  • Alfred V. Aho, M.S. Lam, R.Sethi, J.D. Ullman. Compiladores. Principios, Técnicas y Herramientas. 2ª Ed. Addison Wesley 2008.
  • Kenneth C. Louden. Construcción de Compiladores. Thomson 2004.

Bibliografía complementaria

  • J.P. Tremblay, P.G. Sorenson. The Theory and Practice of Compiler Writing. McGraw-Hill 1985.
  • M. Alfonseca, M. de la Cruz, A. Ortega, E. Pulido. Compiladores e Intérpretes: Teoría y Práctica. Pearson Ed. 2006.

Enlaces recomendados

Metodología docente

  • MD01 Lección Magistral (Clases Teóricas-Expositivas) 
  • MD02 Actividades Prácticas (Resolución de Problemas, Resolución de Casos Prácticos, Desarrollo de Proyectos, Prácticas en Laboratorio, Taller de Programación, Aula de Informática, Prácticas de Campo). 
  • MD03  Seminarios (Debates, Demos, Exposición de Trabajos Tutelados, Conferencias, Visitas Guiadas, Monografías). 
  • MD04 Actividades no presenciales Individuales. 
  • MD05 Actividades no presenciales Grupales. 
  • MD06 Tutorías Académicas. 

Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)

Evaluación ordinaria

Se utilizarán alguna o algunas de las siguientes técnicas de evaluación:

  • Para la parte teórica se realizará un examen parcial que corresponderá a la primera mitad del temario, y un examen final en el que entrará la segunda parte del temario, más la primera parte de éste, en caso de no haberse aprobado el examen parcial. La ponderación de este bloque será de 50% para el examen parcial, y de 50% para el examen final.
  • Para la parte práctica se realizarán prácticas de laboratorio, resolución de problemas y desarrollo de proyectos (individuales o en grupo), y se valorarán las entregas de los informes/memorias realizados por los alumnos, o en su caso las entrevistas personales con los alumnos y las sesiones de evaluación. La ponderación de este bloque será de 30%. De forma optativa, los alumnos podrán realizar hasta dos prácticas adicionales, en cuyo caso, la ponderación de este bloque será de 50%.
  • También se tendrá en cuenta el trabajo autónomo de los alumnos, la asistencia a los seminarios que, en su caso, se puedan organizar, y la presentación oral de los trabajos desarrollados por los alumnos. La ponderación de este bloque será de hasta el 1 punto, sobre 10, a sumar a la nota final

La calificación global corresponderá por tanto a la puntuación ponderada de los diferentes aspectos y actividades que integran el sistema de evaluación. Por tanto, el resultado de la evaluación será una calificación numérica obtenida mediante la suma ponderada de las calificaciones correspondientes a una parte teórica, una parte práctica y, en su caso, una parte relacionada con el trabajo autónomo de los alumnos, los seminarios impartidos y el aprendizaje basado en los proyectos. En cualquiera de los caso la puntuación final no podrá ser superior a 10.

Todo lo relativo a la evaluación se regirá por la normativa sobre planificación docente y organización de exámenes vigente en la Universidad de Granada.

El sistema de calificaciones se expresará mediante calificación numérica de acuerdo con lo establecido en el art. 5 del R. D 1125/2003, de 5 de septiembre y por la normativa de evaluación aprobada por la Universidad de Granada (https://lsi.ugr.es/lsi/normativa_examenes), por el que se establece el sistema europeo de créditos y el sistema de calificaciones en las titulaciones universitarias de carácter oficial y validez en el territorio nacional.

Evaluación extraordinaria

La evaluación  extraordinaria estará formada por todas aquellas pruebas que el profesor estime oportunas, de forma que se pueda acreditar que el alumno ha adquirido la totalidad de las competencias generales y específicas descritas en el apartado correspondiente de esa Guía Docente. En este caso, la ponderación será del 70% para la parte teórica junto a los problemas y del 30% para la parte práctica. Para la nota de la práctica podrá optar por la nota conseguida durante el curso  o por volver a examinarse de la práctica realizada. 

Evaluación única final

Para los alumnos que se acojan a la evaluación única final, esta modalidad de evaluación estará formada por todas aquellas pruebas que el profesor estime oportunas, de forma que se pueda acreditar que el alumno ha adquirido la totalidad de las competencias generales y específicas descritas en el apartado correspondiente de esa Guía Docente. En este caso, la ponderación será del 70% para la parte teórica junto a los problemas y del 30% para la parte práctica. Para el examen de la práctica el alumno debe haber solicitado la asignación de una práctica si no ha tenido asignada alguna durante el curso y presentar la misma.

Información adicional

Definición de grupo grande y grupo pequeño:

  • Los grupos grandes son grupos de 45 a 60 estudiantes.
  • Los grupos pequeños son grupos de 15 a 20 estudiantes

ESCENARIO A (ENSEÑANZA-APRENDIZAJE PRESENCIAL Y TELE-PRESENCIAL)

Horario (Según lo establecido en el POD)

Usando las herramientas online MEET en el horario establecido en el POD.

Herramientas para la atención tutorial (Indicar medios telemáticos para la atención tutorial)

Los horarios de tutorías pueden verse en el enlace: https://grados.ugr.es/informatica/pages/infoacademica/profesorado/*/4A

 

Medidas de adaptación de la evaluación (Instrumentos, criterios y porcentajes sobre la calificación)

  • Las clases teóricas se grabarán y estarán disponibles en Prado durante un tiempo limitado.
  • Se realizarán test en Prado para evaluar la comprensión de los mismos.
  • Se suministrarán guiones detallados de ejercicios prácticos.
  • Se impartirán 90 minutos de clases presenciales a la semana a las que los alumno  asistirán de forma rotativa entre los estudiantes con la capacidad que en cada momento fijen las autoridades sanitarias.
  • Estas clases se usarán para revisar conceptos teóricos, resolver dudas, corregir ejercicios y realizar evaluación continua.Los trabajos realizados por los estudiantes se entregarán en Prado.

Evaluación ordinaria

  • Evaluación continua en base a los trabajos realizados durante el curso
  • Se usarán los mismos porcentajes que en escenario presencial.

Evaluación extraordinaria

  • Examen de ejercicios teóricos y prácticos junto con la defensa de las prácticas.

Evaluación única final

  • Examen de ejercicios teóricos y prácticos junto con la defensa de las prácticas.

ESCENARIO B (SUSPENSIÓN DE LA ACTIVIDAD PRESENCIAL)

Horario (Según lo establecido en el POD)

Ver el enlace: https://grados.ugr.es/informatica/pages/infoacademica/profesorado/*/4A

 

Herramientas para la atención tutorial (Indicar medios telemáticos para la atención tutorial)

Se usará MEET mediante cita previamente concertada con los alumnos.

Medidas de adaptación de la evaluación (Instrumentos, criterios y porcentajes sobre la calificación)

  • Las clases teóricas se impartirán de forma síncrona usando Google Meet en el horario establecido por el centro, se grabarán y estarán disponibles en Prado durante un tiempo limitado.
  • Se realizarán test en Prado para evaluar la comprensión de los mismos.Las clases prácticas se impartirán de forma síncrona usando Google Meet en el horario establecido por el centro.
  • Se suministrarán guiones detallados de ejercicios prácticos.Los trabajos realizados por los estudiantes se entregarán en Prado y se revisarán usando Google Meet.

Evaluación ordinaria

  • Evaluación continua en base a los trabajos realizados durante el curso y revisión usando Google Meet.
  • Se usarán los mismos porcentajes que en escenario presencial.

Evaluación extraordinaria

  • Examen de ejercicios teóricos y prácticos junto con la defensa de las prácticas.

Evaluación única final

  • Examen de ejercicios teóricos y prácticos junto con la defensa de las prácticas.