PROGRAMA DE ESTUDIO Programa Educativo: Área de Formación : Licenciatura en Sistemas Computacionales Integral Profesional Compiladores Horas teóricas: 2 Horas prácticas: 2 Total de Horas: 4 Total de créditos: 6 Clave: F1254 Tipo : Asignatura Carácter de la Optativa asignatura Programa elaborado por: Rubén Jerónimo Yedra, Pablo Payró Campos Fecha de elaboración: 28 de Mayo de 2010 Fecha de última actualización: Seriación explícita Asignatura antecedente No Asignatura Subsecuente Seriación implícita Conocimientos previos: Sí Programar en un lenguaje de alto nivel, usar las estructuras de datos de manera apropiada, aplicar matemáticas discretas y conocer la organización de una computadora. F1254 Compiladores 1/ 10
Presentación El contenido del curso está previsto para un ciclo escolar y brinda al estudiante un panorama general y completo acerca de la teoría de compiladores y los aspectos relacionados con su diseño e implementación. La asignatura requiere la aplicación de conocimientos adquiridos en las áreas de formación general y sustantiva profesional de la Licenciatura en Sistemas Computacionales, específicamente, programación en lenguajes de alto nivel, estructuras de datos, organización de computadoras, matemáticas discretas, paradigmas de programación y, eventualmente, arquitectura de computadoras y microprocesadores. Por lo anterior, el estudiante adquirirá mayores competencias en el desarrollo de software base con la finalidad de aumentar la aplicabilidad a la computadora como herramienta de propósito general en la resolución de problemas específicos. El profesor facilitará el desarrollo de un producto final, que consiste en un prototipo de traductor, intérprete o máquina virtual, proporcionando una especificación detallada del mismo, sin ambigüedades, realista y alcanzable en un ciclo escolar, aplicando herramientas de desarrollo en las que previamente el estudiante tenga experiencias de aprendizaje y que estén disponibles en la División Académica. La asignatura de Compiladores se ubica dentro del área de formación Integral Profesional Objetivo General Conocer los aspectos teóricos-prácticos fundamentales para llevar a cabo el proceso de traducción correctamente de un programa de computadora escrito en un lenguaje de programación de alto nivel hacia un lenguaje de nivel inferior. Competencias que se desarrollarán en esta asignatura Identificar los aspectos formales fundamentales de la teoría de compiladores Adquirir los conocimientos para realizar el análisis léxico Utilizar a las gramáticas como medio de especificación formal de un lenguaje. Comprender las técnicas empleadas en la fase de análisis sintáctico F1254 Compiladores 2/ 10
Entender las técnicas utilizadas para realizar el análisis semántico y generar el código objeto. Comprender los métodos de construcción y acceso de tablas de símbolos Identificar las técnicas más usuales de manejo de memoria y recuperación de errores del compilador Competencias del perfil de egreso que apoya esta asignatura Los conocimientos adquiridos al cursar la asignatura, fortalecerán los concernientes a modelos, métodos y herramientas de ingeniería de software y paradigmas, lenguajes y entornos de programación. Así mismo, las habilidades apoyadas son: de análisis y abstracción, dirigir, coordinar y colaborar en grupos de trabajo, aplicar conocimientos en la identificación y solución eficientes a problemas y riesgos y para formular, gestionar y colaborar en proyectos, en un marco de valores y actitudes acordes a los promovidos por el programa educativo. Escenario de aprendizaje Salón de clases, Laboratorios de cómputo, Servicios bibliotecarios (físicos y virtuales). Perfil sugerido del docente El perfil ideal del docente es un profesional que tenga formación en el área de Informática o Sistemas Computacionales, preferentemente con estudios de posgrado y experiencia laboral en el desarrollo de software. Perfil alternativo del docente es aquel profesional que tenga experiencia laboral en el desarrollo de software base y/o posea curso de actualización disciplinar en las áreas de conocimientos que promueve esta asignatura. Actitudes necesarias del docente son: F1254 Compiladores 3/ 10
Capacidad para promover el trabajo colaborativo entre los alumnos Destreza y habilidad para exponer de forma clara los temas que se abordan en la asignatura Habilidad para aclarar y despejar las dudas que le surjan a los alumnos al revisar los diversos temas de compiladores Contenido Temático I Aspectos formales Identificar los aspectos formales fundamentales para el tema de los compiladores. Hrs. Estimadas 8 Temas Resultados del aprendizaje Sugerencias didácticas Estrategias y criterios de Cuadro comparativo Explicación del tema por Portafolio de evidencias que donde muestre los parte del profesor. contenga todas las elementos formales actividades que se hayan básicos de los desarrollado durante la compiladores. presente unidad. 1.1 Cadenas, alfabetos y lenguajes. 1.2 Clasificación y características de los lenguajes de programación. 1.3 Definiciones (compilador, intérprete, clasificación de los compiladores, formatos de código máquina). 1.4 Máquinas multinivel y virtuales. 1.5 Estructura básica del Resolución de ejemplos de ejercicios que aborden el o los temas revisados. F1254 Compiladores 4/ 10
compilador. II Análisis léxico y tabla de símbolos Adquirir los conocimientos para realizar el análisis léxico. Hrs. Estimadas 12 Temas 2.1. Definición del analizador léxico y sus funciones. 2.2. Expresiones y conjuntos regulares. 2.3. Máquinas de estados finitos. 2.4. Autómatas de estados finitos. 2.5. Diagrama y matriz de transiciones. 2.6. Herramientas para generar analizadores léxicos. Resultados del aprendizaje Documento de texto donde de a conocer que es un analizador léxico e identifique sus funciones. Listado de ejercicios sobre expresiones, conjuntos regulares y autómatas de estados finito. Caso práctico donde demuestre saber desarrollar un analizador léxico. Sugerencias didácticas Explicación del tema por parte del profesor. Solución de ejercicios acerca de tema por parte del profesor. Elaboración de prácticas dirigidas por el profesor Solución al caso práctico propuestos. Estrategias y criterios de Portafolio de evidencias que contenga todas las actividades que se hayan desarrollado durante la presente unidad. Solución de ejercicios en la libreta. Exposición del alumno de problemas resueltos. En equipos de trabajo formado por alumnos, desarrollar un analizador léxico. F1254 Compiladores 5/ 10
III Gramáticas Utilizar las gramáticas como medio de especificación formal de un lenguaje. Hrs. Estimadas 8 Temas Resultados del aprendizaje Sugerencias didácticas Estrategias y criterios de 3.1. Jerarquía de las Listado de ejercicios Explicación del tema y Portafolio de evidencias que gramáticas de Noam donde demuestre solución de problemas contenga todas las Chomsky. comprender las por parte del profesor. actividades que se hayan 3.2. Notaciones BNF y EBNF especificaciones formales desarrollado durante la Elaboración de conjunto 3.3. Gramáticas libres del de los lenguajes de presente unidad. de ejercicios por el contexto. programación mediante profesor. 3.4. Eliminación de la gramáticas libres de Resolución de ejercicios en recursividad izquierda. contexto. Solución de ejercicios la libreta. 3.5. Reducción, ambigüedad Caso práctico donde propuestos. y corrección. muestre su capacidad Exposición del alumno de Solución a los casos para tratar con los problemas resueltos. práctico propuestos. principales errores presentes en una gramática, así como la eliminación de la recursividad izquierda. IV Análisis sintáctico Comprender las técnicas empleadas en la fase de análisis sintáctico. Hrs. Estimadas 12 F1254 Compiladores 6/ 10
Temas 4.1. Definición del analizador sintáctico y sus funciones. 4.2. Derivaciones y árboles. 4.3. Análisis sintáctico ascendente (down-top). 4.4. Análisis sintáctico descendente recursivo (top-down). Resultados del aprendizaje Cuadro sinóptico donde de a conocer y sepa identificar que es un analizador sintáctico y sus funciones. Caso práctico donde pueda identificar las técnicas empleadas en la fase de análisis sintáctico. Caso práctico donde se tenga que aplicar técnicas empleadas en la fase de análisis sintáctico. Caso práctico donde se desarrolle un analizador sintáctico. Sugerencias didácticas Explicación del tema por parte del profesor. Solución de ejercicios acerca de tema por parte del profesor. Elaboración de prácticas dirigidas por el profesor Solución a los casos práctico propuestos. Estrategias y criterios de Portafolio de evidencias que contenga todas las actividades que se hayan desarrollado durante la presente unidad. Resolución de ejercicios en la libreta. Exposición del alumno de problemas resueltos. En equipos de trabajo formado por alumnos, desarrollar un analizador sintáctico. V Análisis semántico y generación de código Entender las técnicas utilizadas para realizar el análisis semántico y generar el código objeto. Hrs. Estimadas 12 F1254 Compiladores 7/ 10
Temas 5.1. Funciones semánticas. 5.2. Síntesis de un solo paso. 5.3. Diseño de una máquina virtual. 5.4. Representaciones intermedias. 5.5. Rutinas semánticas. 5.6. Generación de código. Resultados del aprendizaje Mapa conceptual muestre las técnicas aplicadas al análisis semántico. Formatos de representación intermedia del código. Caso práctico donde se desarrolle un generador de código. Sugerencias didácticas Explicación del tema por parte del profesor con apoyo de una antología. Cuadro comparativo de las representaciones intermedias. Elaboración de diagrama de bloques de una máquina virtual. Estrategias y criterios de Portafolio de evidencias que contenga todas las actividades que se hayan desarrollado durante la presente unidad. Resolución de ejercicios en la libreta. Exposición del alumno de problemas resueltos. Presentación oral del mapa conceptual que muestra las técnicas aplicadas al análisis semántico. F1254 Compiladores 8/ 10
VI Diccionario de símbolos, manejo de memoria y recuperación de errores Conocer los métodos de construcción y acceso de tablas de símbolos y las implicaciones al implementarlas con diferentes tipos de lenguajes de programación, así como, identificar las técnicas más usuales de manejo de memoria y recuperación de errores del compilador. Hrs. Estimadas 12 Temas Resultados del aprendizaje Sugerencias didácticas Estrategias y criterios de Documento de texto Explicación del tema por Portafolio de evidencias que donde se identifique los parte del profesor con contenga todas las métodos de construcción apoyo de una antología. actividades que se hayan y acceso de un desarrollado durante la diccionario de símbolos. presente unidad. 6.1 Introducción. 6.2 Métodos de acceso. 6.3 Lenguajes con estructura de bloques (PASCAL, C). 6.4 Lenguajes con control de amplitud (MODULA, ADA). 6.5 Manejo de las estructuras de datos. 6.6 Asignaciones estática, dinámica y mixta. 6.7 Técnicas de recuperación de errores Caso práctico donde se identifiquen los métodos de implementación de diccionarios de símbolos para traducción de lenguajes con estructura de bloques y con control de amplitud Documento de texto que describa las técnicas de recuperación de errores del proceso de traducción. Elaboración de cuestionario por el profesor. Solución al caso práctico propuestos. F1254 Compiladores 9/ 10
Bibliografía básica Aho, A., et al. (2008). Compiladores: Principios, técnicas y herramientas. 2ª ed. México: Pearson. Alfonseca, M., et al. (2006). Compiladores e intérpretes: teoría y práctica. España: Pearson Prentice Hall. Fischer, C., LeBlanc, R., Cytron, J. (2009). Crafting a compiler: Featuring Java. USA: Addison Wesley. Grune, D., et al. (2007). Diseño de compiladores modernos. Madrid, España: Mc Graw Hill. Mak, R. (2009). Writing compilers and interpreters: A software engineering aproach. 3 rd ed. USA: Wiley and Sons. Bibliografía complementaria Gálvez, S., Mora, M. (2005). Java a tope: Compiladores: Traductores y compiladores con lex/yacc, jflex/cup y javacc. España: Universidad de Málaga. Hopcroft, J., Motwani, R., Ullman, J. (2008). Introducción a la teoría de autómatas, lenguajes y computación. 3ª ed. España: Pearson. Levine, J. (2009). Flex & bison: Unix Text Processing Tools. USA: O'Reilly. Louden, K. (2004). Construcción de compiladores: Principios y práctica. México: Thompson.* *La bibliografía tiene más de cinco años, sin embargo es utilizada porque no existen ediciones actualizadas. F1254 Compiladores 10/ 10