Solicitud de información

Autómatas y Procesadores de Lenguajes

Código Asignatura:
1765
Nº Créditos ECTS:
6
Tipo:
Obligatoria
Duración:
Semestral
Idioma:
Castellano
Plan de estudios:
Profesor(es):
Año académico:
2023-24

La información sobre los datos de contacto y el horario de tutorías se encuentra publicada en el aula virtual de la asignatura.

Descripción

Procesadores de Lenguajes es una asignatura de tipo obligatorio que consta de 6 créditos y que introducirá al estudiante en las áreas fundamentales de la teoría de autómatas, lenguajes formales y gramáticas que constituyen la base del funcionamiento de los procesadores de lenguajes. Se exploran los problemas y técnicas que se plantean en la construcción de procesadores, compiladores, traductores e intérpretes de los diferentes lenguajes de programación. El estudio de dichas técnicas ofrecerá al estudiante una visión más amplia de los lenguajes de programación, previamente estudiados desde el punto de vista del programador y no del constructor de intérpretes o compiladores. Otras aplicaciones de la teoría de autómatas son los analizadores del lenguaje natural, los sistemas de control de máquinas industriales y la robótica.

En esta asignatura se abordarán principalmente los siguientes temas:

  • Teoría de autómatas, que incluye autómatas finitos deterministas (AFD) y no deterministas (AFND), autómatas a pila.
  • Lenguajes y expresiones regulares, y transformaciones.
  • Gramáticas independientes del contexto.
  • Análisis sintáctico y semántico.

Los requisitos previos obligatorios antes de abordar esta asignatura son:

  • Es necesario contar con habilidades básicas de programación, que permitan desenvolverse en un entorno de Programación Orientada a Objetos, así como manipular estructuras de datos. Por lo tanto es obligatorio haber superado previamente la asignatura “Metodología de la Programación”.
  • Es recomendable superar previamente la asignatura “Matemática Discreta”.

Antes de matricular la asignatura, verifique los posibles requisitos que pueda tener dentro de su plan. Esta información la encontrará en la pestaña "Plan de estudios" del plan correspondiente.

Competencias generales

  • Capacidad de resolución de problemas aplicando conocimientos de matemáticas, ciencias e ingeniería.
  • Capacidad para el aprendizaje autónomo y la actualización de conocimientos, así como el reconocimiento de su necesidad en el área de la informática.
  • Capacidad para comunicarse de forma efectiva con los compañeros, usuarios (potenciales) y el público en general acerca de cuestiones reales y problemas relacionados con la ingeniería informática.
  • Capacidad para el uso profesional de la tecnología de la información y la comunicación.
  • Capacidad para desarrollar los conocimientos de la ingeniería informática en un contexto internacional, comunicándose en lengua inglesa y adaptándose a un nuevo entorno.
  • Conocer los cimientos esenciales y fundacionales de la informática, abarcando tanto conceptos y teorías abstractas como los valores y los principios profesionales, subrayando los aspectos esenciales de la disciplina que permanecen inalterables ante el cambio tecnológico.
  • Tener capacidad para realizar la formalización y especificación de problemas reales cuya solución requiere el uso de la informática.
  • Capacidad para trabajar en el ámbito profesional de la Ingeniería Informática de forma efectiva como individuo, organizando y planificando su propio trabajo.

Competencias específicas

  • Capacidad para conocer los fundamentos de los lenguajes de programación y las técnicas de procesamiento utilizadas en el desarrollo de sistemas de procesamiento de lenguajes.

Competencias transversales

  • Capacidad de análisis y síntesis.
  • Capacidad de organización y planificación.
  • Utilizar eficientemente los recursos y herramientas disponibles en el aula virtual de la universidad, así como ser capaz de manejar en un nivel óptimo las tecnologías de la información y la comunicación aplicadas a la educación a distancia.
  • Resolución de problemas.
  • Toma de decisiones.
  • Aprendizaje autónomo.
  • Creatividad.

Resultados del aprendizaje

  • Dominar los modelos formales que sostienen la teoría del procesamiento de lenguajes, tales como las expresiones regulares, teoría de autómatas y gramáticas.
  • Describir las distintas fases y algoritmos utilizados en la traducción y generación de código desde el programa fuente al ejecutable, incluidas las consideraciones en la traducción de código dependiente e independiente de la máquina.
  • Dominar los conceptos de optimización de código, incluyendo las distintas posibilidades en la elección de código intermedio y fases de optimización.
  • Dominar los conceptos de tipos, ámbito y su comprobación (compatibilidad), en el procesamiento de lenguajes de programación.
  • Ser capaz de utilizar herramientas de construcción de procesadores de lenguajes.

Metodología

La metodología adoptada en esta asignatura para el aprendizaje y evaluación de sus contenidos se encuentra adaptada al modelo de formación continuada y a distancia de la UDIMA. Los conocimientos de la asignatura se adquieren a través del estudio razonado de todas las unidades didácticas del manual, así como del material didáctico complementario que se ponga a disposición de los estudiantes en el aula virtual. Además, se complementa con la acción tutorial, que incluye asesoramiento personalizado, intercambio de impresiones en los debates habilitados en foros y demás recursos y medios que ofrecen las nuevas tecnologías de la información y la comunicación. Por otra parte, el aprendizaje también se apoya en la realización de las actividades previstas en el aula virtual, que son de tres tipos (de evaluación continua, de aprendizaje y controles), y que vienen recogidas en el apartado “Contenidos y programación”.

Para ampliar esta información, se recomienda consultar la pestaña “Metodología y exámenes” de la titulación.

Dedicación requerida

La dedicación requerida para esta asignatura de 6 créditos ECTS es de 150 horas, que se encuentran distribuidas de la siguiente manera:

  • Estudio de las Unidades Didácticas: 30%
  • Material complementario. Lectura de artículos/Visionado de vídeos en web: 5%
  • Supuestos, casos prácticos: 35%
  • Búsqueda de información: 15%
  • Redacción o realización de informes: 5%
  • Acción tutorial: 5%
  • Evaluación: 5%

Tutorías

El profesor aporta un seguimiento individualizado de la actividad del estudiante para asegurar las mejores condiciones de aprendizaje mediante la tutorización a través de las herramientas de la plataforma educativa y/o de las tutorías telefónicas. En estas tutorías los estudiantes pueden consultar a los profesores las dudas acerca de la materia estudiada.

Materiales didácticos

Para el desarrollo del aprendizaje teórico sobre el que versará el examen final se ha seleccionado el siguiente manual, a partir del cual se estudiarán las unidades didácticas que se corresponden con la descripción de los contenidos de la asignatura:

Manual de la asignatura:
Lezcano, L. y Sánchez, S. (2012) "Procesadores de Lenguajes". Ed: CEF.

Además, se recomienda la siguiente bibliografía de consulta voluntaria:

Kenneth C. Louden. (2004). Construcción de compiladores: principios y práctica. Cengage Learning Editores.

Enrique Alfonseca, Manuel Alfonseca, Roberto Moriyón. (2007). Teoría de autómatas y lenguajes formales. McGraw Hill.

Michael L. Scott (2009) Programming Language Pragmatics. Morgan Kaufmann

Finalmente, el profesor podrá poner a disposición del estudiante cualquier otro material complementario voluntario al hilo de las unidades didácticas o en una carpeta de material complementario.

Contenidos y programación

SEMANAS (*) UNIDADES DIDÁCTICAS ACTIVIDADES DIDÁCTICAS
Semana 1 Unidad 1. Introducción a los procesadores de Lenguajes
1.1. Concepto de traductor
1.2. Notas históricas
1.3. Programas relacionados con los compiladores
1.4. Proceso de traducción o compilación
1.5. Principales estructuras de datos en un compiladores
1.6. Otros aspectos de la estructura de un compilador
1.7. Alfabetos, cadenas y lenguajes
  • Estudio de la unidad
Semana 2 Unidad 2. Autómatas finitos deterministas
2.1. Introducción a los autómatas finitos
2.2. Autómata finito determinista (AFD)
2.3. Diseño de AFDs
  • Estudio de la unidad
  • Actividad de Aprendizaje 1
Semana 3 Unidad 3. Autómatas finitos no deterministas y sus aplicaciones
3.1. Papel del indeterminismo en los autómatas finitos
3.2. Definición de autómata finito no determinista (AFN)
3.3. Lenguaje aceptado por un autómata finito no determinista
3.4. Diseño de AFNs
3.5. Aplicaciones de los autómatas finitos
  • Estudio de la unidad
  • Actividad de Aprendizaje 2
Semana 4 Unidad 4. Lenguajes y expresiones regulares.
4.1. Introducción a los lenguajes regulares
4.2. Introducción a las expresiones regulares
4.3. Diseño de expresiones regulares
4.4. Aplicaciones de las expresiones regulares
  • Estudio de la unidad
  • Control 1

Semana 5

Unidad 5. Transformaciones entre Modelos Formales
5.1. Transformación de una expresión regular (ER) en un autómata finito no determinista (AFN) equivalente
5.2. Transformación de un autómata finito no determinista en una expresión regular equivalente
5.3. Eliminación de las ε-transiciones y transformación de autómatas finitos no deterministas en autómatas finitos deterministas
5.4. Lema de bombeo
5.5 Autómatas finitos con salida
  • Estudio de la unidad
  • Actividad de Evaluación Continua 1
Semana 6 Unidad 6. Introducción a las gramáticas independientes del contexto
6.1. Grámaticas
6.2. Jerarquía de Chomsky
6.3. Gramáticas regulares
6.4. Gramáticas independientes del contexto
6.5 Diseño de gramáticas independientes del contexto
  • Estudio de la unidad
Semana 7 Unidad 7. Autómatas de pila y aplicaciones de las gramáticas independientes de contexto
7.1. Autómatas de pila
7.2. Autómatas de pila deterministas
7.3. Equivalencia entre gramáticas independientes del contexto y autómatas de pila
7.4. Conceptos básicos para el análisis sintáctico
7.5. Forma normal de Chomsky
  • Estudio de la unidad
  • Actividad de Evaluación Continua 2
Semanas 8 y 9 Unidad 8. Análisis sintáctico descendente
8.1 Introducción a las técnicas LL(1) y LL(k)
8.2. Técnica LL(1)
8.3. Método recursivo-descendente
8.4. Transformaciones en las gramáticas
  • Estudio de la unidad
Semana 10 Semana para trabajar en actividades  
Semana 11 Unidad 9. Análisis sintáctico ascendente
9.1 Introducción al análisis sintáctico ascendente
9.2. Técnicas LR
9.3. Técnicas LR particulares
9.4. Proceso general LR
  • Estudio de la unidad
Semanas 12, 13 y 14 Semana para trabajar en actividades
  • Estudio de la unidad
  • Actividad de Evaluación Continua 3
Semana 15 Unidad 10. Análisis Semántico
10.1. Semántica de los lenguajes de programación
10.2. Gramáticas con atributos
10.3. Relación entre gramáticas con atributos y procesadores de lenguajes
10.4. Las gramáticas y los lenguajes de marcado
  • Estudio de la unidad
  • Control 2
Resto de semanas hasta finalización del semestre Estudio y preparación para el examen final, celebración del examen final y cierre de actas.

(*) Las fechas concretas se pueden consultar en el aula virtual de la asignatura y en la pestaña de “Precios, Calendario y Matriculación” de la titulación.

Sistema de evaluación

Durante el estudio de esta asignatura, el proceso de evaluación del aprendizaje es continuo y contempla la realización de:

- Una evaluación continua a lo largo del curso a través de acciones didácticas que supone el 45% de la nota final. Incluye la realización de los diferentes tipos de actividades de evaluación, de aprendizaje y controles.

  • Actividades de aprendizaje (AA): actividades que permiten evaluar el desarrollo de las competencias al hilo del desarrollo de las unidades didácticas. Pueden adoptar el formato de foro, cuestionario, glosario, lecciones u otros.
  • Controles: actividades que permiten evaluar la adquisición de aspectos conceptuales y prácticos de la asignatura. Toman la forma de cuestionarios.
  • Actividades de evaluación continua (AEC): actividades que permitan evaluar el alcance de ciertos hitos académicos a lo largo del cuatrimestre. Pueden adoptar el formato de informes, cuestionarios, casos prácticos, realización de problemas, etc.

- Un examen final presencial que supone el 55% de la nota final. Está dirigido a la valoración de las competencias y conocimientos adquiridos por el estudiante. El examen se evaluará de 0 a 10, tendrá una duración estimada de 90 minutos y será una selección de problemas.

Para poder presentarse al examen final presencial, en cualquiera de las convocatorias, es imprescindible cumplir los siguientes requisitos relacionados con la evaluación continua: el estudiante tendrá que haber obtenido al menos el 50% de la nota correspondiente al conjunto total de actividades del Aula, asociadas a la asignatura

El estudiante que se presenta al examen sin cumplir los requisitos para ello, será calificado con un cero en el examen final presencial y consumirá convocatoria.

Cuadro resumen del sistema de evaluación

Tipo de actividad Número de actividades planificadas Peso calificación
Actividades de aprendizaje
2
10%
Actividades de Evaluación Continua (AEC)
3
25%
Controles
2
10%
Examen final presencial
55%
TOTAL 100%

Para aprobar la asignatura, es necesario obtener una calificación mínima de 5 en el examen final presencial, así como en la calificación total del curso, una vez realizado el cómputo ponderado de las calificaciones obtenidas en las actividades didácticas y en el examen final presencial.

Si un estudiante no aprueba la asignatura en la convocatoria ordinaria podrá examinarse en la convocatoria de septiembre. El estudiante que no se presente a la convocatoria de febrero y/o de julio ni a la de septiembre, perderá automáticamente todos los trabajos realizados a lo largo del curso. Deberá en este caso matricularse de nuevo en la asignatura.

Las fechas previstas para la realización de todas las actividades se indican en el aula virtual de la asignatura.

Originalidad de los trabajos académicos

Según la Real Academia Española, “plagiar” significa copiar en lo sustancial obras ajenas dándolas como propias. Dicho de otro modo, plagiar implica expresar las ideas de otra persona como si fuesen propias, sin citar la autoría de las mismas. Igualmente, la apropiación de contenido puede ser debida a una inclusión excesiva de información procedente de una misma fuente, pese a que esta haya sido citada adecuadamente. Teniendo en cuenta lo anterior, el estudiante deberá desarrollar sus conocimientos con sus propias palabras y expresiones. En ningún caso se aceptarán copias literales de párrafos, imágenes, gráficos, tablas, etc. de los materiales consultados. En caso de ser necesaria su reproducción, esta deberá contemplar las normas adecuadas para la citación académica.

Los documentos que sean presentados en las actividades académicas podrán ser sometidos a diferentes mecanismos de comprobación de la originalidad (herramientas antiplagios que detectan coincidencias de texto con otras fuentes, comparación con trabajos de otros estudiantes, comparación con información publicada en Internet, etc). El profesor valorará si el trabajo presentado cuenta con los criterios de originalidad exigidos o, en su caso, se atribuye adecuadamente la información no propia a las fuentes correspondientes. La adjudicación como propia de información que corresponde a otros autores podrá suponer el suspenso de la actividad.

Los documentos presentados en las actividades académicas podrán ser almacenados en formato papel o electrónico y servir de comparación con otros trabajos de terceros, a fin de proteger la originalidad de la fuente y evitar la apropiación indebida de todo o parte del trabajo del estudiante. Por tanto, podrán ser utilizados y almacenados por la universidad, a través del sistema que estime, con el único fin de servir como fuente de comparación de cualquier otro trabajo que se presente.

Sistema de calificaciones

El sistema de calificación de todas las actividades didácticas es numérico del 0 a 10 con expresión de un decimal, al que se añade su correspondiente calificación cualitativa:

0 – 4.9: Suspenso (SU)
5.0 – 6.9: Aprobado (AP)
7.0 – 8.9: Notable (NT)
9.0 – 10: Sobresaliente (SB)
Matrícula de honor (MH)

(RD 1125/2003, de 5 de septiembre, por lo que se establece el sistema europeo de créditos y el sistema de calificaciones en las titulaciones universitarias de carácter oficial y con validez en todo el territorio nacional).

La matrícula de honor se concede cuando el profesor lo considere oportuno en función de la excelencia de las actividades realizadas por el estudiante y las calificaciones obtenidas por el resto del grupo. No obstante, los criterios académicos de su concesión corresponden al departamento responsable de cada grado.