Fichas de asignaturas 2011-12
![]() |
PROCESADORES DE LENGUAJES I |
![]() ![]() |
|
Asignatura |
![]() |
| |
Profesorado |
![]() |
| |
Situación |
![]() |
| |
Competencias |
![]() |
| |
Objetivos |
![]() |
| |
Programa |
![]() |
| |
Actividades |
![]() |
| |
Metodología |
![]() |
| |
Distribucion |
![]() |
| |
Técnicas Docentes |
![]() |
| |
Evaluación |
![]() |
| |
Recursos Bibliográficos |
![]() |
Código | Nombre | |||
Asignatura | 1713026 | PROCESADORES DE LENGUAJES I | Créditos Teóricos | 3 |
Descriptor | LANGUAGE PROCESSORS I | Créditos Prácticos | 1,5 | |
Titulación | 1713 | INGENIERÍA EN INFORMÁTICA | Tipo | Troncal |
Departamento | C137 | LENGUAJES Y SISTEMAS INFORMATICOS | ||
Curso | 4 | |||
Duración (A: Anual, 1Q/2Q) | 2Q | |||
Créditos ECTS | 4 |
Para el curso | Créditos superados frente a presentados | Créditos superados frente a matriculados |
2007-08 | 96.2% | 86.2% |
Pulse aquí si desea visionar el fichero referente al cronograma sobre el número de horas de los estudiantes.
Profesorado
Miguel Ángel Bolivar Pérez (Coordinador)
Situación
Prerrequisitos
Los necesarios para acceder al segundo ciclo de la carrera de Ingeniero en Informática
Contexto dentro de la titulación
Esta asignatura troncal de 4º curso se puede considerar continuación de la asignatura llamada "Traductores" obligatoria de 3º curso de las Ingenierías Técnicas de Gestión y Sistemas. Por otra parte puede considerarse previa a la asignatura troncal de 5º curso titulada "Procesadores de Lenguajes II". A su vez, esta asignatura pone en práctica conocimientos y habilidades aprendidas en otras asignaturas distintas de las previamnete citadas. En concreto sobre programación Orientada a objetos, Estructuras de Datos, y Metodología de la Programación.
Recomendaciones
Continuando la asignatura previa de "Traductores" (obligatoria de 3º curso de las Ingenierías Técnicas de Informática de Gestión y de Sistemas, así como del 3º curso de la Ingeniería en Informática), se pretende dotar de conocimientos teóricos y de habilidades prácticas en el funcionamiento y construcción de los compiladores de lenguajes de programación y otros procesadores de lenguajes. Debido al escaso número de créditos de esta asignatura, se ha planteado como una panorámica de los temas descritos en su temario. En concreto se tratarán los temas de: soporte en tiempo de ejecución, representaciones intermedias y generación de código, así como organización de una tabla de símbolos y una introducción al chequeo de tipos. En esta asignatura se estudian materias que pueden ser del interés de aquellos alumnos que deseen conocer el funcionamiento interno de un compilador y de la ejecución, a bajo nivel, de los programas de ordenador. Se recomienda: a) Poseer los conocimientos proporcionados por la asignatura obligatoria de 3º curso titulada "Traductores", así como conocimientos de Programación Orientada a objetos y de Estructuras de Datos. b) La asistencia a clases teóricas y prácticas. c) El estudio y trabajo continuado realizando los ejercicios propuestos por el profesor y entregando los trabajos pedidos a tiempo. d) La utilización del Campus Virtual como herramienta de intercambio de conocimientos entre los alumnos y con el profesor.
Competencias
Competencias transversales/genéricas
INSTRUMENTALES Capacidad de análisis y síntesis Capacidad de organización y planificación Comunicación oral y escrita en la lengua nativa Manejo de manuales y documentos en inglés Conocimientos de informática relativos al ámbito de estudio Capacidad de gestión de la información Resolución de problemas Toma de decisiones PERSONALES Trabajo en equipo Habilidades en las relaciones interpersonales Razonamiento crítico Compromiso ético SISTÉMICAS Aprendizaje autónomo Adaptación a nuevas situaciones Iniciativa y espíritu emprendedor Motivación por la calidad Creatividad
Competencias específicas
Cognitivas(Saber):
Los conocimientos específicos relativos a esta materia incluyen los descritos en su temario.
Procedimentales/Instrumentales(Saber hacer):
Diseñar esquemas de traducción que resuelvan problemas concretos propuestos por el profesor. Escribir a mano el código ensamblador que resultaría de la compilación de programas sencillos en C, sabiendo: o Realizar llamadas y retornos de funciones y procedimientos devolviendo valores. o Manejar datos simples. o Control de flujo del programa. o Manejar datos estructurados y objetos. Buscar información sobre la asignatura. Programar, compilar y depurar programas que implementen ejercicios de la materia en cuestión. Resolver ejercicios y problemas de la materia. Responder, por escrito, a preguntas teóricas.
Objetivos
Presentar al alumno/a la materia. Conocer los principios, ventajas y limitaciones de las diversas tecnologías implicadas. Capacitar a los alumnos/as para implementar un compilador simplificado con generación de código.
Programa
Tema 1: Diseño de esquemas de traducción. Definiciones dirigidas por sintáxis. Definiciones S-atribuidas.Utilización de atributos sintetizados. Definiciones L-atribuidas. Esquemas de traducción. Utilización de atributos heredados. Implementación con FLEX/BISON Adaptación de un esquema a un traductor descendente. Casos especiales. Tema 2: Soporte en tiempo de ejecución. Conceptos sobre lenguajes de programación Estrategias de almacenamiento de datos. Estructura de la memoria en tiempo de ejecución. Repaso del lenguaje ensamblador de la arquitectura intel X86 y manejo del ensamblador de Linux. Un caso concreto: lenguaje C. Secuencias de llamada y retorno. Diferencias entre el lenguaje C y otros lenguajes con procedimientos anidados. El Display. Representación en tiempo de ejecución de los tipos de datos: simples, estructurados y objetos. Tema 3: Representaciones intermedias y generación de código intermedio. Árboles sintácticos (de sintaxis abstracta) y grafos. Código de tres direcciones. Notación polaca postfija. Máquinas virtuales. Esquemas de traducción para la generación de código intermedio. Tema 4: Generación de código a partir del código intermedio. Para estructuras de control. Para estructuras de datos. Para expresiones aritméticas y lógicas. Generadores automáticos de código. Tema 5: Organización de una tabla de símbolos. Introducción. Información almacenada en una tabla de símbolos. Implementación de una tabla de símbolos Organización de una tabla para reflejar problemas de ámbito y persistencia. Ambitos anidados. Un ejemplo concreto. Tema 6: Chequeo de tipos y unificación. Sistemas de tipos. Elementos. Implementación de un sistema de tipos. Esquemas de traducción para el chequeo de tipos. Chequeo de tipos y algoritmo de unificación. La unificación en Prolog y otros lenguajes.
Metodología
Parte de las clases de teoría consistirán en la exposición, por parte del profesor y con ayuda de los medios audiovisuales necesarios, de los contenidos teóricos. En ellas también se propondrán algunos ejercicios a realizar en casa por los alumnos y que serán discutidos, por los propios alumnos, en las clases siguientes. En las clases de prácticas el profesor mostrará ejemplos típicos de módulos de un traductor, discutiendo la solución adoptada. Por último, se pedirá que los alumnos implementen y depuren sobre el ordenador pequeños módulos de compiladores propuestos por el profesor. Tanto los ejemplos típicos como los enunciados de los ejercicios propuestos se publicarán con la suficiente antelación en la página web de la asignatura. Así mismo, los alumnos tendrán que preparar un proyecto de compilador (en grupos) y varios trabajos menores que deberán exponer en público. Se establecerán varios hitos de entrega del proyecto, en fechas concretas y en los que su compilador deberá tener una funcionalidad mínima previamente establecida por el profesor. Todos los miembros de cada grupo deberán exponer su proyecto en cada hito.
Distribución de horas de trabajo del alumno/a
Nº de Horas (indicar total): 100
- Clases Teóricas: 20
- Clases Prácticas: 13
- Exposiciones y Seminarios:
- Tutorías Especializadas (presenciales o virtuales):
- Colectivas: 8
- Individules:
- Realización de Actividades Académicas Dirigidas:
- Con presencia del profesorado: 6
- Sin presencia del profesorado:
- Otro Trabajo Personal Autónomo:
- Horas de estudio: 30
- Preparación de Trabajo Personal: 20
- ...
- Realización de Exámenes:
- Examen escrito: 3
- Exámenes orales (control del Trabajo Personal):
Técnicas Docentes
|
Criterios y Sistemas de Evaluación
Se realizará un examen teórico que contendrá tanto preguntas sobre teoria como supuestos prácticos. El alumno deberá realizar un proyecto práctico que consistirá en la implementación de un pequeño compilador. A lo largo del trimestre se marcarán varios hitos del proyecto en los cuales el alumno deberá entregar documentación y código del compilador con los contenidos que se vayan marcando para cada hito. La entrega de dichos hitos deberá realizarse dentro de las fechas establecidas por el profesor. Con la entrega de cada hito, los alumnos expondrán brevemente el trabajo realizado. Tanto el trabajo expuesto por el alumno como cada uno de los exámenes se valorarán sobre 10. Para aprobar la asignatura habrá que tener aprobado todos y cada uno de ellos (es decir, un mínimo de 5 en el trabajo, 5 en el examen de teoría). Para poder realizar el examen de teoría será necesario haber aprobado el trabajo. Si el trabajo no se aprueba o no se entrega, será necesario hacer una ampliación de ese trabajo, entregarla y aprobarla, para poder realizar el examen de teoría en las siguientes convocatorias. Para aprobar el examen de teoría el alumno debe contestar todos los ejercicios y preguntas presentadas demostrando dominar, suficientemente, todos los objetivos básicos de la asignatura. La calificación final, para aquellos alumnos que tengan aprobadas todas las partes, será la suma ponderada de cada parte. El alumno deberá también realizar algunos trabajos breves que deberá entregar y exponer en las fechas que se indiquen. Dichos trabajos serán tenidos en cuenta en la evaluación. Se realizarán algunos test breves (10-15 minútos) a lo largo del trimestre.
Recursos Bibliográficos
Aho, Sethi y Ullman. "Compiladores: Principios, técnicas y herramientas". Edita Addison-Wesley Publishing Company, 1990. Steven S. Muchnick. "Advanced Compiler Design Implementation". Edita Morgan Kaufmann Publishers, 1997. Michael L. Scott. "Programming Language Pragmatics". Edita Morgan Kaufmann, 2000
El presente documento es propiedad de la Universidad de Cádiz y forma parte de su Sistema de Gestión de Calidad Docente. En aplicación de la Ley 3/2007, de 22 de marzo, para la igualdad efectiva de mujeres y hombres, así como la Ley 12/2007, de 26 de noviembre, para la promoción de la igualdad de género en Andalucía, toda alusión a personas o colectivos incluida en este documento estará haciendo referencia al género gramatical neutro, incluyendo por lo tanto la posibilidad de referirse tanto a mujeres como a hombres.