Inicio >> Docencia >> Titulación >> Asignaturas/Cursos >> Presentación
           --

Ingeniería de Lenguajes de Programación (302442)


Presentación Grupos Recursos Bibliografía Exámenes Avisos

Recomendaciones previas
  • Conocimientos sobre programación y lenguajes de programación C y Java. 
  • Se recomienda no cursar sin tener conocimientos previos de Teoría de Autómatas y su aplicación a los procesos de análisis léxico, sintáctico y semántico presentes en compiladores.
  • Además, conocimientos de Informática Teórica. Específicamente, los aspectos formales de los lenguajes de programación, su representación como lenguajes formales usando gramáticas y expresiones regulares y los modelos de autómatas.
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

  1. Análisis léxico, sintáctico y semántico: Lex, Flex, Jflex, Yacc, Cup, JavaCC, Lex-YaccPLY (Python).
  2. Procesamiento de Lenguaje Natural: NLTK (Python).
Competencias a adquirir

Básicas / Generales: CG1, CG8

Específicas:

De Tecnologías Informáticas: CE-TI5, CE-TI9, CE-TI10, CE-TI11

Metodologías

Las actividades formativas que se proponen para esta materia son las siguientes:

Actividades presenciales:

●      Lección magistral: exposición de teoría y resolución de problemas.

●      Talleres: Realización de prácticas guiadas en laboratorio, empleando metodología basada en problemas.

●      Pruebas de evaluación.

●      Defensas de prácticas.

Actividades no presenciales:

●      Estudio autónomo por parte del estudiante.

●      Revisión bibliográfica y búsqueda de información.

●      Realización de trabajos, prácticas libres, informes de práctica.

●      Tutorías a través del campus virtual

El contenido teórico de las materias presentado en las clases magistrales junto con su aplicación en las clases de problemas y las prácticas guiadas facilitará la asimilación de las competencias anteriormente descritas.

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

Profesorado
Vivian López Batista
Correo electrónico
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

Áreas de Conocimiento
Ciencia de la Computación e Inteligencia Artificial
---
Identificarse Accesibilidad
Idioma inglés
Advertencia sobre la información contenida en esta aplicación Web
© 2025 Departamento de Informática y Automática - Universidad de Salamanca
Webmaster: Correo electrónico
Versión Móvil
[Contenido semántico de esta página]
Member of Informatics Europe Acerca de