Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Asignaturas Aprobadas: Análisis y Diseño de Sistemas (3303), Base de Datos (1959) Asignaturas Regulares: Ingeniería de Software (3304)
Asignaturas Aprobadas: Análisis y Diseño de Sistemas (3303), Base de Datos (1959) Asignaturas Regulares: Ingeniería de Software (3304)
1. CONTEXTUALIZACIÓN DE LA ASIGNATURA
Los temas involucrados en el diseño e implementación de Compiladores conforman una parte
muy relevante en la currícula de Ciencias de la Computación. El desarrollo de un compilador
involucra gran cantidad de técnicas y métodos que permite aplicar una cantidad considerable de
conceptos teóricos y de implementar técnicas y algoritmos en casos específicos.
Se guía al alumno para que: (1) pueda vislumbrar que el campo de aplicación de las técnicas
dadas es más amplio; y (2) reconozca que existen una gran cantidad de técnicas y algoritmos, no
todas vistas en clase, para diseñar e implementar un compilador.
Los contenidos fueron seleccionados con el fin de que el alumno cuente con los conocimientos
necesarios para culminar exitosamente el proyecto. Las actividades se seleccionaron con el fin de
cumplir con los objetivos propuestos, los cuales, todos contribuyen a fortalecer el perfil del
egresado y su práctica profesional.
Se hace especial hincapié en desarrollar la autonomía del alumno para aprender y utilizar las
herramientas involucradas en el desarrollo del proyecto (flex, yacc, bash, C, Makefile).
2. OBJETIVOS PROPUESTOS
3. Capacidad de aplicar los conocimientos adquiridos hasta el momento a la
construcción de soluciones computacionales concretas, autodocumentadas, eficaces y
eficientes.
4. Capacidad autónoma de adquirir destreza en el uso de nuevos herramientas de
desarrollo de software.
5. Habilidad en el manejo del ambiente de desarrollo Linux.
6. Habilidad en el uso del lenguaje C.
7. Capacidad de abordar el diseño de sistemas complejos.
8. Capacidad de realizar la descomposición modular de un proyecto y de trabajar en
grupo.
9. Habilidad en el uso de herramientas para la construcción de compiladores y otros
Universidad Nacional de Rio Cuarto
Facultad de Ciencias Exactas, Físico-Químicas y Naturales
procesadores de lenguajes.
10. Habilidad para realizar el testing modular y global de un sistema complejo
11. Capacidad de redactar documentación técnica.
12. Capacidad comprender y utilizar bibliografía escrita en inglés.
Unidad II. Aplicación de las Definiciones guiadas por sintaxis a la verificación de tipos y la
generación de código. Uso de herramientas lex y yacc.
Unidad III. Código Intermedio. Ventajas de introducir una fase de código intermedio. Lenguajes
de código intermedio: Usando Grafos y Árboles Sintácticos. Máquinas Abstractas, Máquinas
Pila y máquina de tres direcciones. Generación de código para las distintas representaciones.
Implementación del proyecto en modalidad grupal. Carga horaria semanal 11 hs., 4 hs.
sincrónicas de discusión, diseño y presentación de lo realizado, 7 hs. de trabajo colaborativo
entre los integrantes de cada grupo.
17. BIBLIOGRAFÍA
7.1. Bibliografía obligatoria y de consulta
De lectura obligatoria:
“Compilers: Principles, Techniques, and Tools” Second Edition, by Alfred V. Aho, Ravi
Sethi, Jeffrey D. Ullman and Monica S. Lam. 2006.
Modern Compiler implementation in Java. Andrew Appel, Cambridge University Press,
1998.
Documentación (on line) de las herramientas del sistema operativo usadas gnu assembly
language, Java, gnu debbuger, JFlex, CUP.
De consulta:
Advanced Compiler Design and Implementation. Steven Muchnick. Morgan Kaufmann,
1997.
Modern Compiler Design. Grune, Bal, Jacobs,Langendoen. John Wiley & Sons. 2001.
Assembly Language and Programming, Peter Abel. Prentice Hall, 1995
“ A retargetable C Compiler. Fraser & Hamson”, Cumming 1995
"An introduction to Compiler Constructions”. Waite, Carter . Harper Collins 1992
Examen Regular: Presentación del informe, defensa del proyecto y evaluación sobre los
conceptos fundamentales involucrados, su vinculación con el resto de la carrera y la
capacidad de aplicarlos.
Examen Libre: entrega de todas las etapas de un proyecto y el informe final (con una
antelación de al menos 72 hs. al examen). Defensa del proyecto y evaluación sobre los
conceptos fundamentales involucrados, su vinculación con el resto de la carrera y la
capacidad de aplicarlos.