Está en la página 1de 13

1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: Horas teora-horas prctica-crditos 2.

HISTORIA DEL PROGRAMA Programacin de sistemas Ingeniera en Sistemas Computacionales SCC-0425 4-2-10

Lugar y fecha de elaboracin o revisin


Instituto Tecnolgico De Toluca del 18-22 de agosto 2003 Instituto Acapulco, Tecnolgico Cd. de:

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

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
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

Introduccin al diseo de los lenguajes de programacin

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

8.2.2 Almacenamiento 8.3 Otros lenguajes para Virtual Mach (JVM)

6.- APRENDIZAJES REQUERIDOS


Conocer la arquitectura de una computadora Dominar algn lenguaje de programacin de alto nivel Utilizar algn lenguaje de programacin de bajo nivel Dominar la teora e implementacin de autmatas Dominar la teora de lenguajes regulares y 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 practicas coordinadas por el profesor 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 (porcentajes de acreditacin)


Examen escrito 8 exmenes 40%

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%

9.- UNIDADES DE APRENDIZAJE Unidad 1: Introduccin a la programacin de sistemas Objetivo Educacional


El estudiante ubicar la importancia Programacin Sistemas de la de

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.

Buscar generadores de cdigo que sirvan para desarrollar compiladores.

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

eficiencia, compilabilidad, independencia de la mquina, simplicidad, uniformidad, ortogonalidad, especializacin. generalizacin y

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.

Unidad 3: Anlisis lxico Objetivo Educacional Fuentes de Informacin

Actividades de Aprendizaje

Construir analizador lxico

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]

partir de un generador de cdigo compilador de compilador.

expresiones regulares aplicndolo en [1], [2], [3], [5],

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

Unidad 4: Anlisis Sintctico Objetivo Educacional


Implementar un

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.

analizador sintctico a partir de un generador de cdigo compilador de compilador.

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.

Unidad 5: Anlisis Semntico Objetivo Educacional


Implementar un analizador sintctico a partir de un generador de cdigo compilador de compilador.

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.

Unidad 6: Generacin de cdigo intermedio Objetivo Educacional


Desarrollara el cdigo intermedio a partir de

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.

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.

Aplicar las acciones construidas gramtica del lenguaje prototipo.

a la

Unidad 7: Optimizacin Objetivo Educacional


Aplicar las tcnicas de optimizacin de cdigo.

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.

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 por para la su entendible mquina ejecucin.

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.

Conocer las tcnicas de administracin

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

10. FUENTES DE INFORMACIN 1) Aho, SEIT,Ullman. Compiladores Principios, tcnicas y herramientas


Addison Wesley.

2) Karen A. Lemote. Fundamentos de compiladores Com traducir al lenguaje de


computadora. Compaa editorial Continental.

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.

5) Teufel, Schmidt, Teufel. Compiladores Conceptos Fundamentales. AddisonWesley Iberoamericana.

6) Kenneth C. Louden. Construccin de Compiladores. Principios y Prcticas.


Thompson.

7) Kenneth C. Louden. Lenguajes de Programacin Principios y Prcticas.


Thompson.

8) Guillermo

Levine

Gutirrez.

Computacin

Programacin

Moderna

Perspectiva integral de la informtica. Pearson Educacin.

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.

12) Peter Abel. Lenguaje ensamblador y programacin para PC


compatibles. Pearson Educacin.

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

[1] The Lex & Yacc Page, http://dinosaur,compilertools.net [2] A


[3] Lex compact &Yacc guide to lex & Yacc, Thomas Niemann, http://epaperpress.com/lexandyacc HOWTO,Bert Hubert (Power DNS.COM.BV) http://ds9a.nl/lex yacc

[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

[8] Bison, The Yacc-compatible Parser Generator, November 1995, Bison


Versin toc.html 1.5, Charles Donnelly and Richard Stallman. http://www.cs.princeton.edu/appel/modern/c/software/bison/bison

11. PRCTICAS Unidad Practica 1 2 3 3 4 6 8 4 1 1 1 1

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

También podría gustarte