Usted está aquí: Inicio web asignaturas

 

Fichas de asignaturas 2011-12


PROCESADORES DE LENGUAJES I

Asignaturas
 

  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

Sesiones académicas teóricas:Si   Exposición y debate:Si   Tutorías especializadas:Si  
Sesiones académicas Prácticas:Si   Visitas y excursiones:No   Controles de lecturas obligatorias:No  

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.