Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Temario de Programacion de Sistemas
Temario de Programacion de Sistemas
HISTORIA DEL PROGRAMA Programacin de sistemas Ingeniera en Sistemas Computacionales SCC-0425 4-2-10
Participantes
Representantes de la academia de sistemas y computacin de los Institutos Tecnolgicos Academia de sistemas y computacin
Observaciones
Reunin nacional de evaluacin curricular de la carrera de Ingeniera en sistemas Computacionales Anlisis y enriquecimiento de las propuestas de los programas disenados en la reunin nacional de evaluacin. Definicin de los programas de estudio de la carrera de Ingeniera en sistemas Computacionales. Anlisis de congruencia de las materias de la carrera de Ingeniera en Sistemas Computacionales.
Jurez,
Minatitln. 23 agosto al 7 de Nov. 2003 Instituto Tecnolgico de Len 1 al 5 de marzo 2004 Instituto Tecnolgico de Veracruz 14 al 18 agosto 2006 Comit de consolidacin de la carrera de Ingeniera en Sistemas Computacionales Academia de Sistemas y computacin
3.- UBICACIN DE LA ASIGNATURA a). Relacin con otras asignaturas del plan de estudio Anteriores Asignaturas Temas Teora de la - Lenguajes computacin regulares - Lenguajes libres de contexto - Autmatas finitos Asignaturas Lenguaje Ensamblador Alterna Temas Elementos Lenguaje
de
5.- TEMARIO
Unidad
1 de sistemas
Temas
Introduccin a la programacin Sistemas?
Subtemas
1.1 Qu es y que estudia la programacin de 1.2 Herramientas desarrolladas con la teora de programacin de sistemas. 1.3 Lenguajes 1.3.1 Lenguajes naturales 1.3.2 Lenguajes artificiales 1.3.3 Proceso de la comunicacin 1.4 Traductor y su estructura 1.4.1 Ensambladores 1.4.2 Compiladores 1.4.3 Interpretes 1.5 Generadores de cdigo para compiladores (compilador de compiladores, herramientas) 2.1 Visin del problema 2.2 Consideraciones preliminares 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 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, Flex, JFlex, Javacc, ANTLR. 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) 4.5 Administracin de tablas de smbolos 4.6 Manejo de errores sintcticos y su recuperacin
Anlisis lxico 3
Anlisis sintctico
4.7 Generadores de cdigo para analizadores sintcticos: Yacc, Bison, BYACC, ANTLR, Javacc. 5 Anlisis semntico 5.1 Analizador semntico 5.2 Verificacin de tipos en expresiones 5.3 Gramticas de Atributos 6 Generacin de cdigo intermedio 5.4 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 Cdigo P 6.3.3 Triples 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 7 Optimizacin 6.4.7 Funciones 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 Costos de ejecucin 7.2.2 Criterios para mejorar el cdigo 8 Generacin de cdigo objeto 7.2.3 Herramientas para el anlisis de flujo datos. 8.1 Lenguaje Mquina 8.1.1 Caractersticas 8.1.2 Direccionamiento 8.2 Lenguaje ensamblador 8.2.1 Caractersticas
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.
Investigaciones documentales
20%
Desarrollo de un proyecto final en donde se aporte el desarrollo de software en alguna de las reas de la programacin de sistemas. 40%
Actividades de Aprendizaje
Fuentes de Informacin
Realizar una investigacin acerca de las 1, 2, 4, 9, 12, reas de aplicacin de la programacin 13 de sistemas, analizarlas y discutir en el grupo Buscar a travs de diferentes medios, software base 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.
Unidad 2: Introduccin al diseo de los lenguajes de programacin. Objetivo Actividades de Aprendizaje Fuentes de
Educacional
Conocer las bases que deben tomar en cuenta para el buen diseo de un lenguaje de programacin.
Informacin
Definir conceptos a considerar en el diseo de lenguajes de programacin como: deteccin usabilidad, la y comunicacin prevencin programacin de humana, errores, efectiva, 13
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 la caractersticas que lo define, basndose en los puntos vistos como parte del diseo de un lenguaje de programacin. Proponer y disear un lenguaje prototipo.
Actividades de Aprendizaje
un a
Considerar como base de esta unidad lo 1, 2, 3, 5, 6, 7, visto en Teora de la computacin acerca de autmatas finitos determinsticos y ejercicios tipos. 8, 9, 10, 11, 13, 14. [6], [7]
Buscar y seleccionar informacin sobre la construccin de un Analizador lxico, considerando el conocimiento de tokens, construccin de la tabla de smbolos, as como el manejo de errores.
Desarrollar un analizador lxico, aplicado a un lenguaje prototipo o comercial, utilizando un generador de cdigo para esta etapa del proceso como puede ser Lex o Flex, JFlex, Javacc, ANTLR. Prctica 1
Actividades de Aprendizaje
Fuentes de Informacin
8, 9, 10, 11, 13, 14. [6], [8]
Considerar como base de esta unidad lo 1, 2, 3, 5, 6, 7, visto en Teora de la computacin acerca de autmatas finitos determinsticos y ejercicios tipos.
expresiones regulares aplicndolo en [1], [2], [3], [4], 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 BOTTOM UP. 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
sintctico,
aplicado a un lenguaje prototipo o comercial, utilizando un generador de cdigo para esta etapa del proceso como Prctica 1 puede ser Yacc o Bison, ANTLR, Byacc, Javacc, entre otros.
Actividades de Aprendizaje
Fuentes de Informacin
8, 9, 10, 11,
Reconocer el manejo de tipos en las 1, 2, 3, 5, 6, 7, expresiones y el uso de operadores. de tipos (casting) en expresiones. Desarrollar analizar y gramticas evaluar de los atributos, rboles Establecer las reglas para la conversin 13, 14.
(Ascendente y Descendente). 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.
Actividades de Aprendizaje
Fuentes de Informacin
8, 9, 10, 11,
las
estructuras
de de
Realizar ejercicios con los diferentes tipos de notaciones para la conversin de expresiones: infija, prefija y postfija.
13, 14.
lenguajes nivel
programacin de alto
Realizar ejercicios de tcnicas bsicas para la representacin de un cdigo intermedio: Cudruplos. Cdigo P, Triplos y
Desarrollar las acciones que representen la estructura de un lenguaje de Prctica 1 programacin de alto nivel en un cdigo intermedio.
a la
Actividades de Aprendizaje
Fuentes de Informacin
Aplicar las tcnicas para la optimizacin 1, 2, 3, 5, 6, 7, de cdigo sobre el cdigo intermedio 8, 9, 10, 11, generado, evaluando los criterios de 13, 14. 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.
Actividades de Aprendizaje
Fuentes de Informacin
8, 9, 10, 11,
Proporcionar y propiciar la investigacin 1, 2, 3, 5, 6, 7, bibliogrfica del lenguaje mquina. Conocer las caractersticas para recordar las caractersticas de un lenguaje ensamblador. Llevar a cabo dinmicas grupales para recordar las principales caractersticas del lenguaje ensamblador, a fin de llevar un cdigo intermedio, independiente de la mquina a un reconocido por el hardware. grupales 13, 14.
de memoria para el almacenamiento de un programa en modo de ejecucin. Investigar las estructuras de las mquinas virtuales (JVM). Generar el cdigo objeto del lenguaje Prctica 1 desarrollado
3) Jess Salas Parrilla. Sistemas Operativos y Compiladores. Mc. Graw Hill. 4) Beck. Software de sistemas, Introduccin a la Programacin de Sistemas.
Addison- Wesley Iberoamericana.
8) Guillermo
Levine
Gutirrez.
Computacin
Programacin
Moderna
9) Ronald Mak. Writing compilers and interpreters. Wiley Computer Publishing. 10) Fischer, LeBlanc. Crafting a compiler with C. Cummings Publishing Company,
Inc.
11) Thomas Pittman, James Peters. The art of compiler desing Theory and
practice. Prentice Hall.
IBM
13) Temblay & Sorenson. Compilers Writing. Mc Graw Hill. 14) John R. Levine, Tony Mason, Doug Brown. Lex y Yacc. OReilly & Associates.
Referencias en Internet
[4] Bison http:// www.gnu.org/software/bison/bison.html [5] Flex http:// www.gnu.org/software/flex/flex.html [6] Compiler
Construction using Flex & Bison, Anthony Aaby http://cs.wwc.edu/aabyan/464/Book/
[7] Flex, versio 2.5 A fast scanner generator, edition 2.5, March 1995, Verm
Paxson, http://www.cs.princeton.edu/appel/medern/c/sotfware/Flex/Flex toc.html
Desarrollar un compilador para un lenguaje prototipo o lenguaje comercial, para hacer concluido en, mximo 1 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 intrpretes de comandos para herramientas grficas. Generar el analizador lxico de un lenguaje de programacin de alto nivel con la herramienta lxica sugerida Generar el analizador sintctico de un lenguaje de programacin de alto nivel con la herramienta sintctica sugerida. Desarrollara el cdigo intermedio a partir de las estructuras de lenguajes de programacin de alto nivel Generar el cdigo objeto del lenguaje desarrollado