Objetivos de la asignatura |
● Conocer los fundamentos teóricos de los lenguajes de programación (LP), tanto desde el punto de vista de su generación (gramáticas formales) como de su reconocimiento (máquinas y autómatas).
● Comprender cada parte del proceso de compilación y las diferentes formas de abordarlo, según las características del problema y el tipo de solución requerida.
● Relacionar el análisis sintáctico con el semántico, y para ello, estudiar la extensión de las representaciones sintácticas para incorporar atributos que permiten la incorporación de información semántica.
● Desarrollar una actitud crítica ante los LP y los problemas relacionados con su implementación, así como la mejor manera de aprovechar su funcionalidad.
● Conseguir habilidades para el diseño e Integración de herramientas de procesamiento de lenguajes y sus diversas tecnologías.
● Conseguir habilidades para utilizar los conocimientos adquiridos en diferentes aplicaciones prácticas fuera del campo de los procesadores de lenguajes.
● Conocer la aplicación de los procesadores de lenguaje en el Procesamiento del Lenguaje Natural (PLN), la arquitectura de estos sistemas, sus tipos y evolución. Así como algunas aplicaciones de PLN en sistemas de Inteligencia Artificial.
|
|
|
Contenidos |
Contenidos Teóricos
1.-Introducción a los lenguajes y gramáticas formales. Generalidades. Historia. Compiladores.
2.-Autómatas finitos y lenguajes regulares. Autómatas finitos deterministas y no deterministas. Gramáticas y expresiones regulares. Análisis léxico. Herramientas.
3.-Gramáticas y lenguajes independientes de contexto. Definiciones. Autómatas de Pila. Grafos sintácticos.
4.-Análisis sintáctico. Tabla de símbolos. Construcción de analizadores. Herramientas.
5.-Semántica y análisis de tipos. Traducción dirigida por la sintaxis. Gramáticas Atribuidas.
6.-Gestión y manejo de errores de léxico, sintácticos y semánticos.
7.-Generación y Optimización de código. Código intermedio. Gestión de memoria.
8.-Herramientas de generación de compiladores. (Prácticas).
9.- Introducción al Procesamiento del Lenguaje Natural. (Prácticas sobre PLN).
Contenidos Prácticos
- Análisis léxico, sintáctico y semántico: Lex, Flex, Jflex, Yacc, Cup, JavaCC, Lex-YaccPLY (Python).
- Procesamiento de Lenguaje Natural: NLTK (Python).
|
|
|
Previsión de Técnicas (Estrategias) Docentes |
Nombre
|
Horas presenciales
|
Horas no presenciales dirigidas por el profesor
|
Horas de trabajo autónomo del estudiante
|
Horas totales
|
Clases magistrales
|
4
|
0
|
10
|
14
|
Seminarios
|
1
|
0
|
0
|
1
|
Prácticas en aula
|
0
|
0
|
0
|
0
|
Prácticas en el laboratorio
|
0
|
0
|
0
|
0
|
Prácticas en aula de informática
|
3
|
0
|
10
|
13
|
Prácticas de campo
|
0
|
0
|
0
|
0
|
Prácticas de visualización
|
0
|
0
|
0
|
0
|
Trabajo personal de contenidos presenciales y recursos on line
|
0
|
0
|
0
|
0
|
Exposiciones y debates
|
0
|
0
|
0
|
0
|
Tutorías
|
0
|
0
|
2
|
2
|
Actividades de seguimiento on line
|
0
|
0
|
6
|
6
|
Preparación de trabajos
|
0
|
0
|
22
|
22
|
Otras actividades
|
0
|
0
|
0
|
0
|
Exámenes
|
2
|
0
|
15
|
17
|
Prácticas: Realización del TFM
|
0
|
0
|
0
|
0
|
Documentación TFM
|
0
|
0
|
0
|
0
|
TOTAL
|
10
|
0
|
65
|
75
|
|
|
|
|
|
Evaluación |
Criterios de evaluación:
Peso de los diferentes tipos de evaluación:
• Evaluación continua (EC): 20%
• Supuestos prácticos (SP): 40%
• Examen de teoría y problemas (ETP): 40%
La nota final de la asignatura se obtendrá de forma ponderada a través de las notas finales conseguidas en los apartados anteriores.
NOTA FINAL = 0,20 EC + 0,40 SP + 0,40 ETP
La asignatura se supera cuando la nota ponderada sea superior o igual a 5 y en cada uno de los apartados anteriores se haya obtenido una calificación mínima de 4.
Sistemas de evaluación:
- Preguntas tipo test de respuesta única.
- Preguntas de respuesta abierta, de forma concisa y razonada.
- Resolución de problemas.
- Entrega de prácticas.
- Documentación de trabajos prácticos.
|
|
|
Recomendaciones |
Consideraciones generales y recomendaciones para la evaluación y la recuperación: Consideraciones generales • Evaluación continua Se tendrá en cuenta la asistencia y la participación en clase • Realización de exámenes de teoría y problemas. Examen final con preguntas sobre los contenidos teóricos y problemas de aplicación de dichos contenidos • Realización de prácticas, trabajos o proyectos: La evaluación de la parte práctica se realizará a partir de la documentación de los trabajos de prácticas realizados individualmente o en grupos de dos estudiantes.
Recomendaciones para la evaluación Se recomienda el estudio sistemático de la asignatura, y el seguimiento detallado de todos los temas que se imparten cada semana en la plataforma virtual, y que se relacionan con los anteriores. Se destaca la gran importancia de la realización de los ejercicios prácticos que se plantean con cada tema, para su mejor compresión y alcanzar los objetivos de la asignatura.
Recomendaciones para la recuperación Partes del temario teórico están íntimamente ligadas al desarrollo de las prácticas, pero en general no es razonable poder aprobar la parte teórica sin aprobar la parte práctica o viceversa. Se recomienda por tanto guardar la nota obtenida en una de las partes para la recuperación de la otra. Para los estudiantes que durante el curso no hayan realizado las entregas de prácticas por causas justificadas se podrá establecer un nuevo plazo de entrega/defensa o bien requerir en el examen la realización de algún ejercicio adicional específico de la parte que no se haya superado. En cualquier caso, para aprobar la asignatura deberá obtenerse una nota mínima en cada parte.
|
|
|
Datos de interés |
BIBLIOGRAFÍA
Libros de consulta para el alumno 1. Autómatas, gramáticas y lenguajes formales. García Saiz, T. y Gaudioso Vázquez, E., Ed. Sanz y Torres, 2010. 2. Teoría de autómatas y lenguajes formales. Alfonseca, E., Alfonseca, M. y Moriyón, R. McGraw Hill, 2007. 3. Construcción de compiladores: principios y práctica. Louden, K. C., International Thomson Editores, ISBN 970-686-299-4, 2004. 4. Diseño de compiladores. Garrido. A., Iñesta, J., Moreno, F. y Pérez, J., Universidad de Alicante, 2002. 5. LEX & YACC. Levine, J., Mason, T., Brown, D., Editorial, O’Reilly, ISBN:1-56592-000-7, 1992. 6. Compiladores: Principios, técnicas y herramientas. AHO, SETHI, ULLMAN: Addison-Wesley Iberoamericana, 1990. 7. Técnicas de procesamiento del lenguaje. Badia, T, In M. A. Martí (Ed.), Tecnologías del lenguaje. Barcelona: Editorial UOC. 2003
Otras referencias bibliográficas
• Teoría de Autómatas y Lenguajes Formales. Elena Jurado Málaga. Servicio de Publicaciones Universidad de Extremadura, 2008 ( http://biblioteca.unex.es/tesis/Teorias_automatas.pdf). • Natural Language Processing in Python. Steven Bird, Ewan Klein, and Edward Loper, 2007 (http://nltk.sourceforge.net/index.php/Book). • Java a tope: Traductores y compiladores con lex/yacc, jflex/cup y javacc. Sergio Gálvez Rojas, Miguel Ángel Mora Mata. Edición electrónica. 2017 (https://books.google.es/books?vid=ISBN8468910376). • LEX-YAAC: https://tldp.org/HOWTO/Lex-YACC-HOWTO.html • JFLAP: http://www.cs.duke.edu/csed/jflap/ • JAVACC: https://javacc.org • NLTK: http://www.nltk.org/book • PLY: https://ply.readthedocs.io/en/latest/ply.html
|
|
|
|
Otros datos |
Créditos: 3.0 (1.5 T + 1.5 P)
,
Primer cuatrimestre
,
Optativa
,
Número de grupos de teoría: 1
,
Número de grupos de práctica: 1
|
Máster Universitario en Ingeniería Informática
|
Segundo curso
|
|
|
|
|
|

|