Download SÍLABO DEL CURSO DE COMPILADORES Y LENGUAJES DE
Document related concepts
Transcript
SÍLABO DEL CURSO DE COMPILADORES Y LENGUAJES DE PROGRAMACIÓN I. INFORMACIÓN GENERAL 1.1 Facultad Ingeniería 1.2 Carrera Profesional Ingeniería en Sistemas Computacionales 1.3 Departamento 1.4 Requisito II. 1.5 Periodo Lectivo Algebra Lineal y Numérica Análisis y Diseño de Algoritmos 2014-1 1.6 Ciclo de Estudios VIII 1.7 Inicio – Término 24 de marzo de 2014 – 19 de julio del 2014 1.8 Extensión Horario 08 HOTAS TOTALES (04 HC - 04 HNP) 1.9 Créditos 4 SUMILLA Esta asignatura es de naturaleza teórica y práctica para los estudiantes del VIII ciclo de la carrera de Ingeniería de Sistemas Computacionales. El curso tiene dos propósitos distintos pero relacionados entre sí. En primer lugar, se explora la teoría de lenguajes y en segundo lugar, se muestra cómo aplicar esta teoría a la construcción de compiladores. Los temas principales del curso son: los paradigmas de los lenguajes de programación, la teoría de lenguajes y el proceso de compilación, describiendo los componentes de un compilador: análisis léxico, análisis sintáctico, análisis semántico, generación de código intermedio y código objeto. Los estudiantes realizarán un proyecto de aplicación, utilizando como lenguaje de programación C/C++ y los generadores de código FLEX y BISON. III. LOGRO DEL CURSO Al terminar el ciclo, el estudiante construye un analizador léxico-sintáctico; utilizando el lenguaje de programación C/C++ y los generadores de código FLEX y BISON, los principios de la teoría de lenguajes y la teoría de compiladores; sustentando su funcionamiento y construcción. IV. UNIDADES DE APRENDIZAJE Nombre de Unidad I: Lenguajes de Programación y Teoría de Lenguajes Logro de Unidad: Al terminar la unidad, el estudiante elabora ejemplos de gramáticas que se usan en los lenguajes de programación, a partir de la clasificación de gramáticas propuesta por Chomsky, presentando un listado de al menos 5 ejemplos. Sem Saberes Básicos HISTORIA DE LOS LENGUAJES DE PROGRAMACI ÓN. 1 2 BREVE REVISIÓN DE LOS PARADIGMAS DE PROGRAMACI ÓN: Lenguajes procedurales, Lenguajes orientados a objetos, Lenguajes funcionales, Lenguajes declarativos y no algorítmicos, Lenguajes de scripts. LENGUAJES Y GRAMÁTICAS 3 Alfabeto, cadena, gramática, derivación, derivación más a la izquierda, derivación más a la derecha, sentencia, lenguaje, clausura, clausura Contenidos Actividades de Aprendizaje Horas Horas No Presenciales Presenciales Participa en la presentación y socialización acerca del sílabo del curso. Realiza un resumen sobre la lectura “Historia de los Lenguajes de Programación”. Participa de la explicación del docente y elabora un mapa conceptual sobre los lenguajes de programación. Elabora una línea de tiempo sobre la lectura de la Evolución de los Lenguajes de Programación. Elabora un cuadro comparativo de los lenguajes de programación. Participa de la introducción al tema sobre paradigmas de los lenguajes de programación. Revisa en forma grupal información acerca de los paradigmas de la programación. Elabora un listado de las ventajas y desventajas de los paradigmas de programación. Estudia los elementos básicos de los lenguajes y gramáticas con ayuda del docente. Identifica derivaciones utilizando ejemplos gramáticas. Aplica las de Recursos Sílabo, PPT, Lecturas Criterios de evaluación Elabora organizadores de información acerca de los lenguajes de programación identificando los aspectos más relevantes del tema. Realiza un comentario de la lectura “Paradigmas de los Lenguajes de Programación”. Averigua y elabora una matriz con nombres de lenguajes de programación y los clasifica según los paradigmas estudiados. PPT, Libros, Lecturas Propone un listado de ventajas y desventajas de los paradigmas de programación incluyendo las características más importantes. PPT, Lista de ejercicios, Libros Presenta un informe de ejercicios resueltos sobre lenguajes y gramáticas, detallando paso a paso lo aprendido en clase. Investiga sobre los paradigmas de programación no abordados en clase. Investiga acerca de la diferencia entre clausura y clausura positiva. Desarrolla ejercicios sobre lenguajes y gramáticas. operaciones clausura ejercicios gramáticas. positiva. Jerarquía gramáticas según Chomsky. Lenguajes, Gramáticas Autómatas. 4 de y EXPRESIONES REGULARES Expresión regular Definición regular de en de Identifica las gramáticas de acuerdo a la Jerarquía según Chomsky. Elabora ejemplos de gramáticas según la jerarquía estudiada. Define gramáticas por cada jerarquía estudiada. Desarrolla ejercicios sobre expresiones regulares PPT, Lista de ejercicios, Libros Desarrolla ejercicios sobre gramáticas y expresiones regulares, aplicando las clasificaciones estudiadas. Desarrolla ejercicios sobre expresiones regulares. Evaluación: (T1): PRACTICA CALIFICADA ESCRITA + Promedio de las Actividades Presenciales y No Presenciales Nombre de Unidad II: El compilador: Análisis léxico Logro de Unidad: Al terminar la unidad, el estudiante construye analizadores léxicos; usando C/C++ y FLEX, la teoría de lenguajes; presentando la implementación del analizador léxico que reconoce un programa fuente con precisión. Contenidos Sem Actividades de Aprendizaje Saberes Criterios de ana Recursos Horas Horas No Básicos evaluación Presenciales Presenciales Identifica los PROGRAMACI procesos de ÓN DE traducción de los SISTEMAS intérpretes, PROCESADOR compiladores y ES DE ensambladores, LENGUAJES diferenciándolos Investiga y hace un entre sí. resumen sobre los Elabora un gráfico Intérpretes, conceptos básicos que muestre la Traductores: Estudia y expone del compilador. simulación del compiladores y sobre los proceso de PPT, ensambladores. conceptos Elabora una matriz compilación de un 5 Separata, básicos del de semejanzas y fragmento fuente, Libros EL compilador. diferencia entre los demostrando COMPILADOR traductores: creatividad y Identifica la intérpretes, coherencia con lo El Compilador estructura interna compiladores y estudiado. Estructura de y externa del ensambladores. compilador. un compilador Proceso de Compilación AUTÓMATAS FINITOS 6 Autómatas Finitos: tipos (AFND, AFD) Simula el proceso de compilación de un fragmento fuente. Estudia la definición de los autómatas y su clasificación. Diseña autómatas finitos a partir de gramáticas regulares. Identifica a los autómatas finitos Desarrolla ejercicios sobre autómatas PPT, Lista de ejercicios, Libros Soluciona correctamente ejercicios sobre autómatas finitos y expresiones regulares. Conversión de una ER a un AFND y diferencia AFD de AFND. Conversión de un AFND a un AFD Diseña autómatas finitos a partir de gramáticas regulares. ANÁLISIS LÉXICO Análisis léxico 7 Tokens, lexemas, patrones Implementación del analizador léxico de un lenguaje de programación. 8 Parte aplicativa los los Desarrolla ejercicios sobre autómatas finitos y expresiones regulares utilizando algoritmos. Estudia e identifica los elementos del analizador léxico y sus funciones en la compilación. Desarrolla ejercicios sobre análisis léxico. finitos y expresiones regulares. Desarrolla ejercicios sobre análisis léxico. Desarrolla e implementa Analizador Léxico. PPT, Lista de ejercicios, Libros Implementa Analizador Léxico que reconoce un programa fuente con precisión. PPT, Lista de ejercicios, Libros Implementa Analizador Léxico que reconoce un programa fuente con precisión. Formula proyecto sobre Análisis Léxico. Formula proyecto sobre Análisis Léxico. Desarrolla e implementa Analizador Léxico. EVALUACIÓN PARCIAL Nombre de Unidad III: El Compilador: Análisis Sintáctico Logro de Unidad: Al terminar la unidad, el estudiante construye analizadores sintácticos usando C/C++ y BISON; a partir de la técnica de análisis sintáctico ascendente; presentando la implementación del analizador sintáctico con orden y precisión. Contenidos Sem Actividades de Aprendizaje Saberes Criterios de ana Recursos Horas Horas No Básicos evaluación Presenciales Presenciales ANÁLISIS Identifica las GLC SINTÁCTICO y sus propiedades. Desarrolla ejercicios Gramática propiedades Libres de Estudia y aplica sobre de las gramáticas de Contexto (GLC) definiciones de contexto libre. Soluciona ambigüedad y PPT, correctamente Arboles de recursividad en Desarrolla ejercicios Lista de ejercicios sobre derivación. GLC. 9 sobre análisis ejercicios, GCL y análisis sintáctico. Libros, sintáctico. Notación BNF. Elimina la Proyecto recursividad por Ambigüedad. Investiga sobre la izquierda con Recursividad. implementación de ayuda de Proyecto sobre Eliminación de algoritmos. Análisis Sintáctico. la recursividad Desarrolla por la izquierda ejercicios sobre Factorización por la izquierda. PROYECTO: Construcción de un analizador léxico-sintáctico Analizador predictivo recursivo 10 no Esquema General. Algoritmo. Construcción de Tabla de Análisis. Analizadores Ascendentes. Analizadores LR. 11, 12 Construcción de un analizador SLR(0): Items. Gramática aumentada. Conjuntos CLAUSURA y GOTO. Colección Canónica. Construcción de tablas de análisis. análisis sintáctico utilizando árboles sintácticos. Formula proyecto sobre Analizador sintáctico Identifica algoritmo para el desarrollo de análisis predictivo. Desarrolla ejercicios sobre análisis predictivo no recursivo Presenta resumen acerca del Analizador predictivo. Desarrolla ejercicios sobre análisis predictivo no recursivo PPT, Lista de ejercicios, Libros Soluciona correctamente los ejercicios propuestos sobre análisis predictivo no recursivo. PPT, Lista de ejercicios, Libros Presenta el listado de solución de ejercicios sobre análisis sintáctico LR mostrando propiedades del análisis y precisión en su desarrollo. Participa en la explicación de los analizadores ascendentes. Identifica los analizadores LR y desarrolla ejercicios sobre análisis sintáctico LR. Desarrolla ejercicios sobre CLAUSURA y GOTO. Investiga y presenta resumen sobre Gramática aumentada. Desarrolla ejercicios sobre análisis sintáctico LR. Construye tablas de análisis sobre gramáticas. Evaluación: (T2): PRACTICA CALIFICADA ESCRITA+ Promedio de las Actividades Presenciales y No Presenciales Nombre de Unidad IV: El compilador: Análisis Semántico, Tabla de Símbolos y Síntesis Logro de Unidad: Al terminar la unidad, el estudiante construye un comprobador de tipos para un lenguaje de programación; a partir de una gramática de libre contexto; presentando el desarrollo del comprobador de tipos con orden y precisión Contenidos Sem Actividades de Aprendizaje Saberes Criterios de ana Recursos Horas Horas No Básicos evaluación Presenciales Presenciales Estudia en grupos ANALISIS material sobre SEMANTICO. Análisis Presenta resumen semántico. sobre las Comprobación Presenta la solución especificaciones de estática. PPT, del listado de Desarrolla un comprobador Lista de ejercicios sobre 13 sencillo. Sistemas de ejercicios ejercicios, comprobación de comprobación de Libros tipos mostrando tipos. tipos. Desarrolla ejercicios precisión. sobre comprobación Especificación Participa en la de tipos. de un conversión de Comprobador tipos. de sencillo. Tipos Conversión tipos. de Generación de Código Intermedio. Formas Internas. Tipos de Formas Interna 14 15 15 16 17 V. Semántica de Operadores de Formas Internas. Estructuras datos. de Semántica operadores aritméticos saltos. de Tabla Símbolos de y GENERACIÓN DE CÓDIGO OBJETO: Introducción Participa en la explicación sobre generación de código intermedio. Identifica las formas internas acerca de la generación de código intermedio. Desarrolla ejercicios sobre generación de código intermedio PPT, Lista de ejercicios, Libros Presenta el listado de solución de ejercicios sobre generación de código intermedio mostrando precisión. PPT, Lista de ejercicios, Libros Presenta el desarrollo de ejercicios sobre generación de código objeto demostrando criterio y precisión en la solución. Desarrolla ejercicios sobre generación de código intermedio. Estudia material en grupo sobre generación de código objeto y elabora resumen. Desarrolla ejercicios sobre generación de código objeto. Desarrolla ejercicios sobre generación de código objeto. Evaluación T3: PRACTICA CALIFICADA ESCRITA + Promedio de las Actividades Presenciales y No Presenciales EVALUACIÓN FINAL: Revisión del Proyecto Analizador Léxico-Sintáctico (En Laboratorio) + Evaluación escrita de Sustento del Proyecto. EVALUACIÓN SUSTITUTORIA ESTRATEGIAS DIDÁCTICAS Aprendizaje basado en problemas. Estudio de casos. Aprendizaje basado en proyectos. Aprendizaje cooperativo. VI. SISTEMA DE EVALUACIÓN DEL CURSO El cronograma de la evaluación continua del curso es el siguiente: ESPECIFICACIÓN DE ACTIVIDADES DE EVALUACIÓN CONTINUA EN EL CURSO T Descripción Semana T1 Práctica Calificada Escrita + Promedio de las Actividades Presenciales y No Presenciales 4 T2 Práctica Calificada Escrita + Promedio de las Actividades Presenciales y No Presenciales 12 T3 Práctica Calificada Escrita + Promedio de las Actividades Presenciales y No Presenciales 15 El peso de cada T es: EVALUACIÓN T1 T2 T3 TOTAL PESO (%) 20 35 45 100% ESCALA VIGESIMAL 2,4 4,2 5,4 12 Los pesos ponderados de los resultados de evaluación son los siguientes: EVALUACIÓN PARCIAL CONTINUA (Ts) FINAL TOTAL PESO (%) 20 60 20 100% ESCALA VIGESIMAL 4 12 4 20 Eventos UPN – Live (dirigido a docentes y estudiantes) EVENTO VII. FECHA World Leadership Forum (México) 09 y 10 de abril World Innovation Forum (New York) 04 y 05 de junio World Business Forum (New York) 07 y 08 de octubre BIBLIOGRAFÍA 1. N° 1 Bibliografía Básica CÓDIGO 005.453 AHO/IN AUTOR Aho, A.; Sethi, R.; Ullman, J TITULO Compilers: Principles, Techniques, & Tools AÑO 2008 005.453 AHO Aho, A.; Sethi, R.; Ullman, J 2 005.453 RUIZ Ruiz Catalán, Jacinto 3 Llorca, S.; Pascual G. 4 2. N° CÓDIGO 1986 Construcción de 2004 Compiladores Principios y Práctica. 005.13 LOUD Louden, K.C Lenguajes de 2004 Programación: principios y práctica 005.133 TUCK Tucker, Allen Lenguajes Programación de 1987 Cueva L, J. M Conceptos básicos procesadores lenguaje de 1998 de Cueva L, J. M Lenguajes, gramáticas y 2001 autómatas Cueva L, J. M Análisis Sintáctico procesadores lenguaje Cueva L, J. M Análisis Semántico 2004 Cueva L, J. M Tabla de Símbolos 2006 6 7 8 9 AÑO de 1998 en 2005 de E-books CÓDIGO AUTOR upneb.ILL071 Alfonseca, Moreno Aho, A.; Sethi, R.; Ullman, J 2 Compiladores Teoría y Construcción Louden, K.C 5 N° 2010 TITULO Fundamentos Compiladores 3 1 Compiladores: Teoría e implementación AUTOR Teufel, B. y Schmidt, S 2 3. 1996 Bibliografía Complementaria 1 4 Compiladores principios, técnicas y herramientas TITULO Compiladores intérpretes: teoría practica AÑO e 2006 y Compilers: Principles, Techniques, & Tools 2008 Páginas Web para consultar en Internet N° 1 AUTOR Bison - GNU parsergenerator 2 VIII. TITULO Flex: The Fast Lexical Analyzer LINK http://flex.sourceforge.net / http://www.gnu.org/softw are/bison/ AÑO ANEXOS Competencias Generales UPN Competencias 1. Liderazgo 2. Trabajo en Equipo 3. Comunicación Efectiva 4. Responsabilidad Social 5. Pensamiento Crítico 6. Aprendizaje Autónomo 7. Capacidad para Resolver Problemas 8. Emprendimiento Descripción Inspira confianza en un grupo, lo guía hacia el logro de una visión compartida y genera en ese proceso desarrollo personal y social. Trabaja en cooperación con otros de manera coordinada, supera conflictos y utiliza sus habilidades en favor de objetivos comunes. Intercambia información a través de diversas formas de expresión y asegura la comprensión mutua del mensaje. Asegura que sus acciones producirán un impacto general positivo en la sociedad y en la promoción y protección de los derechos humanos. Analiza e Interpreta, en contextos específicos, argumentos o proposiciones. Evalúa y argumenta juicios de valor. Busca, identifica, evalúa, extrae y utiliza eficazmente información contenida en diferentes fuentes para satisfacer una necesidad personal de nuevo conocimiento. Reconoce y comprende un problema, diseña e implementa un proceso de solución y evalúa su impacto. Transforma ideas en oportunidades y acciones concretas de creación de valor para la organización y sociedad.