Usted está aquí: Inicio web asignaturas

Fichas de asignaturas 2006-07


  CÓDIGO NOMBRE
Asignatura 1713026 PROCESADORES DE LENGUAJES I
Titulación 1713 INGENIERÍA EN INFORMÁTICA
Departamento C137 LENGUAJES Y SISTEMAS INFORMATICOS
Curso 4  
Duración (A: Anual, 1Q/2Q) 2Q  
Créditos ECTS 4  

Créditos Teóricos 3 Créditos Prácticos 1,5 Tipo Troncal

 

Profesorado
José Antonio Jiménez Millán (Coordinador)
Situación
prerrequisitos
Los necesarios para acceder al segundo ciclo de la carrera de Inegniero 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 Campas 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.
    • Describir, por escrito, 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.
• Utilización de atributos sintetizados.
• Utilización de atributos heredados.
• Adaptación de un esquema a un traductor descendente.
• Casos especiales.
Tema 2: Soporte en tiempo de ejecución.
• Repaso del lenguaje ensamblador  de la arquitectura intel X86 y manejo del
ensamblador de Linux.
• Estrategias de almacenamiento de datos.
• Estructura de la memoria en tiempo de ejecución.
• 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.
• Organización de una tabla para reflejar problemas de ámbito y persistencia.
• Un ejemplo concreto.
Tema 6: Chequeo de tipos y unificación.
• Sistemas 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 trabajo a exponer en público.
Distribución de horas de trabajo del alumno/a

Nº de Horas (indicar total): 100

  • Clases Teóricas: 10  
  • Clases Prácticas: 10  
  • Exposiciones y Seminarios: 16  
  • Tutorías Especializadas (presenciales o virtuales):
    • Colectivas: 3  
    • 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: 24,75  
    • Preparación de Trabajo Personal: 24,25  
    • ...
        
  • Realización de Exámenes:
    • Examen escrito: 6  
    • Exámenes orales (control del Trabajo Personal):  
Técnicas Docentes
Sesiones académicas teóricas:   Exposición y debate:   Tutorías especializadas:  
Sesiones académicas Prácticas:   Visitas y excursiones:No   Controles de lecturas obligatorias:No  
Criterios y Sistemas de Evaluación
Se realizarán un examen teórico y otro práctico. El examen práctico se
realizará sobre un ordenador y necesitará la implementación de un pequeño
compilador.
Los trabajos de los alumnos deben ser entregados dentro de las fechas indicadas
por el profesor.
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 y 5 en el de
prácticas).
Para poder realizar el examen de teoría habrá que haber aprobado el trabajo.
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.
Para poder pasar a la fase del examen de prácticas habrá que tener aprobado el
examen de teoría.
La calificación final, para aquellos alumnos que tengan aprobadas todas las
partes, será la suma ponderada de cada parte.

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.