UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS

Anuncio
UNIVERSIDAD DE GUADALAJARA
CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS
DIVISIÓN DE ELECTRÓNICA Y COMPUTACIÓN
DEPARTAMENTO DE CIENCIAS COMPUTACIONALES
DATOS GENERALES
CLAVE DE LA MATERIA
:
CC317
NOMBRE DE LA MATERIA
:
COMPILADORES
TIPO
:
TEORIA
CARÁCTER DEL CURSO
:
OBLIGATORIO
ÁREA DE FORMACIÓN
:
ESPECIALIZANTE
PRE-REQUISITOS
:
TEORIA DE LA COMPUTACIÓN
DEPTO. DE ADSCRIPCIÓN :
CIENCIAS COMPUTACIONALES
ACADEMIA
:
SOFTWARE DE SISTEMAS
CARGA HORARIA GLOBAL
:
80 HORAS
CARGA HORARIA SEMANAL
:
4 HORAS
VALOR EN CRÉDITOS
:
11 CRÉDITOS
FECHA DE ACTUALIZACIÓN
:
JULIO/2004
Calendario de Aplicación: 2006-A
OBJETIVO GENERAL
:
EL ALUMNO COMPRENDERÁ QUÉ ES Y CÓMO
FUNCIONA UN COMPILADOR. ADQUIRIRÁ LA
CAPACIDAD PARA DISEÑAR UN COMPILADOR
FUNCIONAL COMPLETO PARA UN LENGUAJE
ESPECIFICADO AL COMENZAR EL CURSO
UNIVERSIDAD DE GUADALAJARA
CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS
DIVISIÓN DE ELECTRÓNICA Y COMPUTACIÓN
DEPARTAMENTO DE CIENCIAS COMPUTACIONALES
COMPILADORES
CONTENIDO TEMÁTICO PRINCIPAL
Aplicar en el Calendario: 2006-A
Módulo 1. Descripción general de los traductores (4 horas)
Objetivo Particular: El alumno entenderá el funcionamiento genérico de un compilador.
1.1
1.2
1.3
Funciones principales (30 minutos)
Estructura interna (30 minutos)
Pasos y fases de la compilación y de la interpretación (1 hora)
Objetivos Específicos:
1.1
1.2
1.3
Que el alumno entienda cómo funciona un compilador.
Que el alumno comprenda como está estructurado un compilador.
Que el alumno visualice de manera general cada una de las fases de un compilador.
Actividad:
Presentación por parte del maestro cada uno de los pasos de un compilador
Instalaciones y Recursos: Aula de clase, pintarrón
Tiempo Disponible:
2 horas
Módulo 2. Analizador léxico (10 horas)
Objetivo Particular: El alumno realizará un reconocedor léxico en base a las gramáticas de tipo 3 y los
autómatas finitos.
2.1
2.2
2.3
Lenguajes y expresiones regulares (1 hora)
Analizador lexicográfico con autómatas finitos (1 hora)
Diseño de un analizador léxico (2 horas)
Objetivos Específicos:
2.1
2.2
2.3
Que el alumno comprenda el uso y la creación de las expresiones regulares.
Que el alumno aplique los autómatas finitos en la realización de un analizador léxico.
Que el alumno entienda como se puede diseñar un analizador léxico.
Actividad:
El alumno diseñará en el aula un conjunto de expresiones regulares
Instalaciones y Recursos: Aula de clase, pintarrón, cuaderno
Tiempo Disponible:
2 horas
Actividad:
El alumno diseñará autómatas que reconozcan expresiones regulares
Instalaciones y Recursos: Aula de clase, pintarrón, cuaderno
Tiempo Disponible:
2 horas
Actividad:
El alumno diseñará el analizador léxico para el lenguaje especificado
Instalaciones y Recursos: Aula de clase, apuntes, cuaderno
Tiempo Disponible:
2 horas
Módulo 3: Analizador sintáctico (14 horas)
Objetivo Particular: El alumno realizará un rastreador o ‘parser’ con base en las dos filosofías básicas en el
análisis sintáctico.
3.1
3.2
3.3
3.4
3.5
Gramáticas independientes de contexto (1 hora)
Autómata de pila (1 hora)
Analizadores sintácticos descendentes (2 horas)
Analizadores sintácticos ascendentes (1 hora)
Diseño de un analizador de descenso recursivo (2 horas)
Objetivos Específicos:
3.1
3.2
3.3
3.4
3.5
Que el alumno retome los conceptos de gramáticas vistos en teoría de la computación.
Que el alumno identifique el uso de los autómatas de pila en los analizadores sintácticos.
Que el alumno observe las características de los analizadores descendentes.
Que el alumno observe y compare los analizadores ascendentes y descendentes.
Que el alumno entienda como se puede diseñar un analizador de descenso recursivo.
Actividad:
El alumno diseñará en el aula un autómata de pila para un conjunto de expresiones
Instalaciones y Recursos: Aula de clase, pintarrón, cuaderno
Tiempo Disponible:
1 hora
Actividad:
El alumno diseñará el analizador sintáctico de descenso recursivo (parser) para el
lenguaje especificado en clase
Instalaciones y Recursos: Aula de clase, apuntes, cuaderno
Tiempo Disponible:
6 horas
Módulo 4. Tabla de símbolos (4 horas)
Objetivo Particular:
4.1
4.2
4.3
4.4
Esquemas de la tabla de símbolos (15 minutos)
Arreglos secuenciales (30 minutos)
Arreglos de acceso por dispersión (30 minutos)
Estructuras avanzadas (30 minutos)
Objetivos Específicos:
4.1
4.2
4.3
4.4
Que el alumno entienda que es y como funciona una tabla de símbolos.
Que el alumno identifique el uso de los arreglos secuenciales en la tabla de símbolos.
Que el alumno comprenda las ventajas del uso de las tablas de dispersión.
Que el alumno comprenda como emplear estructuras de datos avanzadas para hacer más
eficiente la tabla de símbolos.
Actividad:
Presentación por parte del maestro del esquema de la tabla de símbolos y de la
ventaja de los arreglos de acceso por dispersión sobre los arreglos secuenciales
Instalaciones y Recursos: Aula de clase, pintarrón
Tiempo Disponible:
15 minutos
Actividad:
El alumno diseñará una tabla de símbolos para el lenguaje especificado en clase
Instalaciones y Recursos: Aula de clase, apuntes, cuaderno
Tiempo Disponible:
2 horas
1er examen parcial. Duración: 2 horas.
1er examen departamental. Duración: 2 horas.
Modulo 5. Análisis semántico (14 horas)
Objetivo Particular: El alumno aprenderá a hacer las diferentes validaciones necesarias para la detección de
construcciones gramaticales correctas pero con un significado erróneo o contradictorio.
5.1
5.2
5.3
5.4
Verificación de tipos (2 horas)
Verificación de unicidad (2 horas)
Verificación de flujo (2 horas)
Verificación en uso de símbolos (2 horas)
Objetivos Específicos:
5.1
5.2
5.3
5.4
Que el alumno detecte cuáles son las verificaciones necesarias para los tipos de dato.
Que el alumno detecte cuáles son las verificaciones necesarias para la unicidad.
Que el alumno detecte cuáles son las verificaciones necesarias en el flujo de datos.
Que el alumno detecte cuáles son las verificaciones necesarias para el uso de símbolos.
Actividad:
El alumno agregará las verificaciones necesarias para el lenguaje especificado al
analizador sintáctico de descenso recursivo diseñado previamente en clase
Instalaciones y Recursos: Aula de clase, apuntes, cuaderno
Tiempo Disponible:
6 horas
Módulo 6: Generación de código y optimizaciones del compilador (8 horas)
Objetivo Particular: El alumno comprenderá los mecanismos de generación de código dirigido por la
sintaxis del lenguaje propuesto. A su vez, analizará el impacto que tiene la arquitectura de un procesador
sobre la generación de código objeto.
6.1
6.2
6.3
Código intermedio (1 hora)
Código objeto (1 hora)
Optimización local (1 hora)
Objetivos Específicos:
6.1
6.2
6.3
Que el alumno aprenda a crear código intermedio y las ventajas que tiene.
Que el alumno identifique las ventajas del código objeto y como este puede variar
dependiendo de la arquitectura del procesador.
Que el alumno aprenda las ventajas de hacer un compilador óptimo además de funcional.
Actividad:
El alumno diseñará diagramas de flujo y pseudocódigo que identifiquen donde se
debe generar código (intermedio u objeto) para las diferentes estructuras de
control de un lenguaje de programación
Instalaciones y Recursos: Aula de clase, pintarrón, cuaderno
Tiempo Disponible:
2 horas
Actividad:
El alumno agregará las instrucciones necesarias al analizador sintáctico de
Descenso recursivo diseñado previamente en clase para que éste genere código y
que además lo realice de manera adecuada.
Instalaciones y Recursos: Aula de clase, apuntes, cuaderno
Tiempo Disponible:
3 horas
Módulo 7. Recuperación de errores (4 horas)
Objetivo Particular: El alumno aprenderá los diferentes esquemas de la gestión de errores.
7.1
7.2
7.3
Gestión de errores en tiempo de compilación (30 minutos)
Gestión de errores durante la ligadura de módulos objeto (30 minutos)
Métodos de recuperación de errores (1 hora)
Objetivos Específicos:
7.1
7.2
7.3
Que el alumno identifique los errores que se pueden presentar en cada una de las fases
durante el proceso de compilación.
Que el alumno comprenda la importancia de los errores que pueden ocurrir al ligar módulos.
Que el alumno identifique los cuatro métodos de recuperación de errores y que aprenda
como funciona cada uno de ellos.
Actividad:
El alumno agregará las verificaciones pertinentes al analizador sintáctico de
descenso recursivo diseñado previamente en clase para tratar de identificar los
errores que podrían ocurrir así como recuperarse de ellos.
Instalaciones y Recursos: Aula de clase, apuntes, cuaderno
Tiempo Disponible:
2 horas
Módulo 8. Gestión de memoria (2 horas)
Objetivo Particular: El alumno aprenderá los efectos que se tienen sobre el diseño de un compilador
dependiendo de la dinámica de gestión de memoria y de los recursos del procesador.
8.1
8.2
8.3
8.4
8.5
8.6
Gestión estática y dinámica de memoria (15 minutos)
Representación de procesos en memoria (15 minutos)
Liga postergada (15 minutos)
Ámbito de variables (15 minutos)
Procedimientos y módulos (15 minutos)
Paso de parámetros y registro de activación. (15 minutos)
Objetivos Específicos:
8.1
8.2
8.3
8.4
8.5
8.6
Que el alumno visualice las diferencias entre la gestión estática y dinámica de la memoria.
Que el alumno comprenda como se representan los procesos físicamente en la memoria.
Que el alumno entienda el concepto de liga postergada y sus ventajas
Que el alumno identifique como el ámbito de una variable afecta en el flujo de un programa.
Que el alumno comprenda como se representan en la memoria los procedimientos y los
módulos de un programa.
Que el alumno refuerce los conocimientos acerca de los diferentes métodos para el paso de
parámetros y que aprenda que es un registro de activación y su contenido.
Actividad:
Presentación por parte del maestro de cada uno de los métodos para el paso de
parámetros y la manera en que estos son tratados por la memoria dependiendo del
método utilizado.
Instalaciones y Recursos: Aula de clase, pintarrón
Tiempo Disponible:
30 minutos
2do examen parcial. Duración: 2 horas.
2do examen departamental. Duración: 2 horas.
MODALIDAD DE ENSEÑANZA-APRENDIZAJE
Para la realización de este curso, se recomienda que el profesor asesore y supervise el proceso de formación y
retención de cada alumno, además de comprobar la realización de las prácticas del taller de compiladores.
Para cada sesión el alumno deberá haber leído y comprendido el material que se le indique previamente.
El proyecto final se calificará con una parte proporcional de las calificaciones obtenidas en la materia de taller
de compiladores y en caso de no estar cursándola se calificará con la integración, complementación y entrega
de todas las actividades finales de los módulos 2 al 7 hechas en teoría a lo largo del semestre.
MATERIAL DE APOYO ACADÉMICO
- Notas sobre el curso.
- Pintarrón y marcadores.
- Laptop y cañón.
CRITERIOS DE EVALUACIÓN
Se evaluará durante el período escolar mediante:


Trabajos de investigación, tareas, actividades, participaciones, exámenes y un proyecto final
El examen extraordinario estará conformado por una revisión teórica y práctica de todo el curso
CRITERIOS DE CALIFICACIÓN
La calificación se integrará de la siguiente manera:





30%
20%
30%
10%
10%
Exámenes departamentales
Exámenes parciales
Actividades finales (6 en total, una por cada módulo del 2 al 7)
Trabajos de investigación, tareas y participaciones
Proyecto final
CRITERIOS DE ACREDITACIÓN
Haber obtenido un promedio global de 60 puntos de un máximo de 100 y un mínimo del 80% del total de
asistencia y tener trabajo registrado en el ciclo.
COMPETENCIAS QUE SE PUEDEN ADQUIRIR

Capacidad de ser un diseñador de compiladores de lenguajes, y creación de intérpretes.

Capacidad para diseñar programas de sistemas en donde se involucra el proceso de lenguajes de
programación.

Programación más eficiente a partir del entendimiento del funcionamiento de los compiladores y las
técnicas de optimización de código.
APLICACIÓN PROFESIONAL
Entender la importancia de los programas de sistemas que interpretan, compilan y en general procesan
lenguajes, de manera que se puedan implantar procesadores de órdenes de aplicación particular en la industria
ó actividad profesional que lo requiera.
Se asume la integridad y honestidad del alumno, sin embargo aquellos proyectos que sean presentados como
propios y la autoría fuese ajena provocará la reprobación automática.
BIBLIOGRAFÍA
Título: Compiladores. Principios, técnicas y herramientas.
Autor: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman.
Editorial: Addison-Wesley / Pearson.
Año: 1990.
Título: Construcción de Compiladores.
Autor: Kenneth C. Louden.
Editorial: Thomson.
Año: 2004.
Título: 21st Century Compilers.
Autor: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Monica Lam.
Editorial: Addison-Wesley.
Año: 2004.
Manual en línea: http://www-2.cs.cmu.edu/~rwh/plbook/online.pdf
Descargar