Está en la página 1de 12

1.

- DATOS DE LA ASIGNATURA Nombre de la asignatura: Programacin de sistemas Carrera: Ingeniera en Sistemas Computacionales Clave de la asignatura: SCC - 0425 Horas teora-horas prctica-crditos 4-2-10

2.- HISTORIA DEL PROGRAMA

Lugar y fecha de elaboracin o Participantes revisin Instituto Tecnolgico Representantes de la de Toluca del academia de sistemas y 18 al 22 agosto 2003. computacin de los Institutos Tecnolgicos. Instituto Tecnolgico de: Acapulco, Cd. Jurez Minatitln. 23 agosto al 7 de noviembre 2003.

Observaciones (cambios y justificacin) Reunin nacional de evaluacin curricular de la carrera de Ingeniera en Sistemas Computacionales.

Academia de sistemas y Anlisis y enriquecimiento de computacin. las propuestas de los programas diseados en la reunin nacional de evaluacin. Definicin de los programas de estudio de la carrera de Ingeniera en Sistemas Computacionales.

Instituto Tecnolgico Comit de consolidacin de Len de la carrera de 1 al 5 de marzo 2004. Ingeniera en Sistemas Computacionales.

3.- UBICACIN DE LA ASIGNATURA a). Relacin con otras asignaturas del plan de estudio Anteriores Asignaturas Temas Teora de la Lenguajes libre de computacin contexto Lenguajes regulares. -Autmatas finitos Posteriores Asignaturas Temas

b). Aportacin de la asignatura al perfil del egresado Desarrolla software de base como: traductores, cargadores, ligadores, herramientas, utileras, DBMS, generadores de cdigo, etc. 4.- OBJETIVO(S) GENERAL(ES) DEL CURSO El estudiante desarrollar software de base, tales como compiladores o interpretes.

5.- TEMARIO Unidad Temas 1 Introduccin a la programacin de sistemas 1.1 1.2 1.3 Subtemas Qu es y qu estudia la programacin de sistemas? Herramientas desarrolladas con la teora de programacin de sistemas. Lenguajes. 1.3.1 Lenguajes naturales. 1.3.2 Lenguajes artificiales. 1.3.3 Proceso de la comunicacin. Traductor y su estructura. 1.4.1 Ensambladores. 1.4.2 Compiladores. 1.4.3 Interpretes. Generadores de cdigo para compiladores (compilador de compilador).

1.4

1.5

Introduccin al diseo de los lenguajes de programacin

2.1 Visin del problema. 2.2 Consideraciones Premilinares. 2.3 Objetivos y filosofas del diseo de los lenguajes de programacin. 2.4 Diseo detallado. 2.5 Caso de estudio. 3.1 Introduccin a los Autmatas finitos y expresiones regulares. 3.2 Analizador de lxico. 3.3 Manejo de localidades temporales de memoria (buffers). 3.4 Creacin de tablas de smbolos. 3.5 Manejo de errores lxicos. 3.6 Generadores de cdigo lxico: Lex y Flex. 4.1 Introduccin a las Gramticas libres de contexto y rboles de derivacin. 4.2 Diagramas de sintaxis. 4.3 Precedencia de operadores. 4.4 Analizador sintctico. 4.4.1 Analizador descendente (LL). 4.4.2 Analizador ascendente(LR, LALR.

Anlisis Lxico.

Anlisis sintctico.

5.- TEMARIO (Continuacin) 4.5 Administracin de tablas de smbolos. 4.6 Manejo de errores sintcticos y su recuperacin. 4.7 Generadores de cdigo para analizadores sintcticos: Yacc, Bison 5 Anlisis semntico 5.1 5.2 5.3 5.4 Analizador semntico Verificacin de tipos en expresiones. Conversin de tipos. Acciones agregadas en un analizador sintctico descendente (top-down). 5.5 Pila semntica en un analizador sintctico ascendente (bottom-up). 5.6 Administracin de la tabla de smbolos. 5.7 Manejo de errores semnticos. 6.1 Lenguajes intermedios. 6.2 Notaciones. 6.2.1 Infija. 6.2.2 Postfija. 6.2.3 Prefija. 6.3 Representacin de cdigo intermedio. 6.3.1 Notacin Polaca. 6.3.2 Codigo P. 6.3.3 Triplos. 6.3.4 Cudruplos. 6.4 Esquemas de generacin. 6.4.1 Expresiones. 6.4.2 Declaracin de variables, constantes 6.4.3 Estatuto de asignacin. 6.4.4 Estatuto condicional. 6.4.5 Estatuto de ciclos 6.4.6 Arreglos. 6.4.7 Funciones.

Generacin de cdigo intermedio.

5.- TEMARIO (Continuacin) 7 Optimizacin. 7.1 Tipos de optimizacin. 7.1.1 Locales. 7.1.2 Bucles. 7.1.3 Globales. 7.1.4 De mirilla. 7.2 Costos. 7.2.1 Costo de ejecucin. 7.2.2 Criterios para mejorar el cdigo. 7.2.3 Herramientas para el anlisis del flujo de datos. 8.1 Lenguaje mquina. 8.1.1 Caractersticas. 8.1.2 Direccionamiento. 8.2 Lenguaje ensamblador. 8.2.1 Caractersticas. 8.2.2 Almacenamiento. 8.3 Registros. 8.3.1 Distribucin. 8.3.2 Asignacin. 8.4 Administracin de memoria.

Generacin de cdigo objeto.

6.- APRENDIZAJES REQUERIDOS Conocer la arquitectura de una computadora. Dominar algn lenguaje de programacin de alto nivel. Utilizar algn lenguaje de programacin bajo nivel. Dominar la teora e implementacin de autmatas. Dominar la teora de lenguajes libres de contexto.

7.- SUGERENCIAS DIDCTICAS Realizar Investigacin en diversas fuentes de informacin sobre los conceptos de la asignatura, por equipos analizarlos y discutirlos en clase. Elaborar de manera conjunta ejercicios y prcticas coordinadas por el profesor. Llevar a cabo dinmicas grupales que permitan analizar la teora con casos prcticos. Manejar herramientas de programacin de sistemas formales como los metalenguajes. Desarrollar proyectos relacionados con el proceso de traduccin o cualquier herramienta que se encuentre dentro del rea del software de base. Presentar los resultados del desarrollo del proyecto final.

8.- SUGERENCIAS DE EVALUACIN Examen escrito. Investigaciones documentales. Elaboracin de ensayos. Desarrollo de un proyecto final en donde se aplique la teora de compiladores. Desarrollo de un proyecto final en donde se aporte el desarrollo de software en alguna de las reas de la programacin de sistemas.

9.- UNIDADES DE APRENDIZAJE UNIDAD 1.- Introduccin a la programacin de sistemas. Objetivo Educacional El estudiante ubicar la importancia de la Programacin de Sistemas Actividades de Aprendizaje Realizar una investigacin acerca de las reas de aplicacin de la programacin de sistemas, analizarla y discutir en el grupo. Buscar a travs de diferentes medios, herramientas utilizadas en el entorno industrial, empresarial, gubernamental o acadmico, que estn clasificadas dentro de la programacin de sistemas. Desarrollar un ensayo acerca de los traductores que se utilizan con mayor frecuencia en nuestro tiempo. Buscar generadores de cdigo que sirvan para desarrollar compiladores. Fuentes de Informacin 1, 2, 4, 9, 12, 13

UNIDAD 2.- Introduccin al diseo de los lenguajes de programacin. Objetivo Educacional Conocer las bases que deben tomar en cuenta para el buen diseo de un lenguaje de programacin Actividades de Aprendizaje Definir aspectos a considerar en el diseo de lenguajes de programacin como: la comunicacin humana, prevencin y deteccin de errores, usabilidad, programacin efectiva, eficiencia, compilabilidad, independencia de la mquina, simplicidad, uniformidad, ortogonalidad, generalizacin y especializacin. Discutir en grupo las condiciones que determinan la funcionalidad del lenguaje tales como: Microestructuras, estructura de las expresiones, estructuras de datos, estructuras de control, estructuras de compilador, estructuras para entradas y salidas. Analizar un lenguaje computacional como caso tipo y desarrollar un ensayo acerca de las caractersticas que lo define, basndose en los puntos vistos como parte del diseo de un lenguaje de programacin. Proponer y disear un lenguaje prototipo. Fuentes de Informacin 13

UNIDAD 3.- Anlisis Lxico. Objetivo Educacional Construir un analizador lxico a partir de un generador de cdigo compilador de compilador Fuentes de Informacin Considerar como base de esta unidad lo 1, 2, 3, 5, 6, 7, 8, 9, 10, visto en Teora de la Computacin 11, 13, 14. acerca de autmatas finitos [1], [2], [3], determinsticos y expresiones regulares [5], [6], [7] aplicndolo en ejercicios tipos. Buscar y seleccionar informacin sobre la construccin de un Analizador Lxico. Construir un Analizador de Lxico, considerando el reconocimiento de tokens, la administracin de un espacio temporal de memoria (buffers), la Actividades de Aprendizaje

construccin de la tabla de smbolos, asi como el manejos de errores. Desarrollar un analizador de lxico, aplicado a un lenguaje prototipo o comercial, utilizando un generador de cdigo para esta etapa del proceso como puede ser Lex o Flex, entre otros.

UNIDAD 4.- Anlisis sintctico. Objetivo Educacional Implementar un analizador sintctico a partir de un generador de cdigo compilador de compilador Fuentes de Informacin Considerar como base de esta unidad lo 1, 2, 3, 5, 6, 7, 8, 9, 10, visto en Teora de la Computacin acerca de lenguajes libres de contexto y 11, 13, 14. [r], [2], [3], [4], los rboles de derivacin a travs de [6], [8] ejercicios tipo. Construir diagramas de sintaxis a partir de gramticas. Agregar dentro de la gramtica del lenguaje la precedencia de operadores. Construir un analizador sintctico bajo la metodologa TOP-DOWN y BOTTOMUP. Aplicar tcnicas para la deteccin y recuperacin de errores en la etapa de sintaxis. Integrar la etapa del lxico dentro del desarrollo del compilador. Desarrollar un analizador de sintctico, aplicado a un lenguaje prototipo o comercial, utilizando un generador de cdigo para esta etapa del proceso como puede ser Yacc o Bison, entre otros. Actividades de Aprendizaje

UNIDAD 5.- Anlisis semntico. Objetivo Educacional Implementar un analizador sintctico a partir de un generador de cdigo compilador de compilador Actividades de Aprendizaje Reconocer el manejo de tipos en las expresiones y el uso de operadores. Establecer las reglas para la conversin de tipos (casting) en expresiones. Agregar acciones semnticas a la estructura de la gramtica, tanto en metodologa TOP-DOWN como BOTTOM-UP. Manejar la tabla de smbolos a fin de administrar el almacenamiento de informacin con su tipo. Detectar los errores semnticos y la recuperacin de los mismos. Fuentes de Informacin 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14.

UNIDAD 6.- Generacin de cdigo intermedio. Objetivo Educacional Desarrollar una mquina virtual que ejecute un cdigo intermedio a partir del cdigo fuente del lenguaje prototipo. Actividades de Aprendizaje Reconocer el manejo de tipos en las expresiones y el uso de operadores. Realizar ejercicios con los diferentes tipos de notaciones para la conversin de expresiones: Infija, prefija y posfija. Realizar ejercicios de tcnicas bsicas para la representacin de un cdigo intermedio: Cdigo P, Triplos y Cudruplos. Desarrollar las acciones que representen la estructura de un lenguaje de programacin de alto nivel en un cdigo intermedio. Aplicar las acciones construidas a la gramtica del lenguaje prototipo. Fuentes de Informacin 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14.

UNIDAD 7.- Optimizacin. Objetivo Educacional Aplicar las tcnicas de optimizacin de cdigo. Actividades de Aprendizaje Aplicar las tcnicas para la optimizacin de cdigo sobre el cdigo intermedio generado, evaluando los criterios de tiempo de ejecucin o extensin de cdigo generado. Buscar nuevas tcnicas para la optimizacin de cdigo, sobre todo para aquellos lenguajes que requieren de una mquina virtual para su ejecucin sobre multiplataformas. Escribir un ensayo que establezca las tendencias y tcnicas empleadas para este propsito. Fuentes de Informacin 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14.

UNIDAD 8.- Generacin de cdigo objeto. Objetivo Educacional Utilizar el lenguaje de bajo nivel para llevar el cdigo construido en un lenguaje de alto nivel a un lenguaje entendible por la mquina para su ejecucin Actividades de Aprendizaje Proporcionar y propiciar la investigacin bibliogrfica del lenguaje mquina. Conocer las caractersticas de un lenguaje ensamblador. Llevar a cabo dinmicas grupales para recordar las caractersticas principales del lenguaje ensamblador, a fin de llevar un cdigo intermedio, independiente de la mquina a un cdigo reconocido por el hardware. Conocer las tcnicas de administracin de memoria para el almacenamiento de un programa en momento de ejecucin. Fuentes de Informacin 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14.

10. FUENTES DE INFORMACIN 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Aho, Sethi, Ullman. Compiladores Principios, tcnicas y herramientas Addison Wesley. Karen A. Lemone. Fundamentos de compiladores Cmo traducir al lenguaje de computadora. Compaa Editorial Continental. Jess Salas Parrilla. Sistemas Operativos y Compiladores. McGraw Hill. Beck. Software de Sistemas, Introduccin a la programacin de Sistemas. Addison-Wesley Iberoamericana. Teufel, Schmidt, Teufel. Compiladores Conceptos Fundamentales. Addison-Wesley Iberoamericana. Kenneth C. Louden. Construccin de compiladores Principios y prctica. Thomson. Kenneth C. . Louden. Lenguajes de programacin Principios y prctica. Thomson. Guillermo Levine Gutirrez. Computacin y programacin moderna Perspectiva integral de la informtica. Pearson Educacin. Ronald Mak. Writing compilers and interpreters. Wiley Computer Publishing. Fischer, LeBlanc. Crafting a compiler with C. Cummings Publishing Company, Inc. Thomas Pittman, James Peters. The art of compiler design Theory and practice. Prentice Hall. Peter Abel. Lenguaje ensamblador y programacin para PC IBM y compatibles. Pearson Educacin. Temblay & Sorenson. Compilers Writing. Mc Graw Hill. John R. Levine, Tony Mason, Doug Brown. Lex y Yacc. O'Reilly & Associates.

Referencias en Internet
[1] [2] [3]

[4] [5] [6]

The Lex & Yacc Page, 3-mar-04, 12:45 http://dinosaur.compilertools.net A compact guide to lex & Yacc, Thomas Niemann, 3-Mar-04, 12:50 http://epaperpress.com/lexandyacc Lex & Yacc HOWTO, Bert Hubert (PowerDNS.COM.BV), 3-Mar-04, 12:55 http://ds9a.nl/lex_yacc Bison, 3-Mar-04, 13:00 http://www.gnu.org/software/bison/bison.html Flex, 3-Mar-04, 13:02 http://www.gnu.org/software/flex/flex.html Compiler Construction using Flex and Bison, Anthony Aaby, 3-mar04, 13:05 http://cs.wwc.edu/aabyan/464/Book/
Flex, versin 2.5 A fast scanner generator, Edition 2.5, March 1995, Vern Paxson, 3-Mar-04,13:10 http://www.cs.princeton.edu/appel/modern/c/software/flex/flex_toc.html Bison, The Yacc-compatible Parser Generator, November 1995, Bison Version 1.5, Charles Donnelly and Richard Stallman, 3-Mar-04,13:10 http://www.cs.princeton.edu/appel/modern/c/software/bison/bison_toc.html

[7] [8]

11. PRCTICAS

Unidad Prctica 1 Desarrollar un compilador para un lenguaje prototipo o lenguaje comercial, para ser concluido en, mximo un semestre Desarrollar herramientas de software de base como editores, procesadores de texto, hojas de clculo. Desarrollar un manejador de bases de datos, con una estructura bsica. Desarrollar interpretadores de comandos para herramientas grficas.

2 3 4

También podría gustarte