Usted está aquí: Inicio web asignaturas

 

Fichas de asignaturas 2013-14


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 INGENIERÍA INFORMÁTICA    
Curso 4      
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%

 

 

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 previamente 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

Al dejar de impartirse la asignatura en el curso 2012/2013 dispone de 4
convocatorias de examen que puede distribuir durante los cursos 2012/2013 y
2013/2014.

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

Al dejar de impartirse la asignatura en el curso 2012/2013 dispone de 4
convocatorias de examen que puede distribuir durante los cursos 2012/2013 y
2013/2014.

Para la evaluación de la asignatura se realizarán dos pruebas en el examen:
* Prueba escrita sobre el programa de la asignatura, que constará de: ejercicios
de programación, preguntas de respuesta breve, preguntas de respuesta múltiple o
alternativa (test) y/o preguntas de desarrollo corto en las que se evaluará el
conocimiento básico de los alumnos sobre la asignatura.
* Prueba práctica sobre los conocimientos prácticos adquiridos donde el alumno
deberá resolver determinadas cuestiones prácticas establecidas.
Para aprobar la asignatura habrá que tener aprobado todos y cada uno de ellos (es
decir, un mínimo de 5 en el examen de prácticas y 5 en 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

•José Antonio Jiménez Millán. "Compiladores y Procesadores de Lenguajes. 2ªed.".
Edita: Servicio de Publñicaciones de la Universidad de Cádiz, 2010.
•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.