UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS DIVISIÓN DE ELECTRONICA Y COMPUTACIÓN DEPARTAMENTO DE CIENCIA COMPUTACIONALES DATOS GENERALES CLAVE DE MATERIA : CC209 NOMBRE DE MATERIA : TEORIA DE LA COMPUTACIÓN CARÁCTER DEL CURSO : OBLIGATORIO ÁREA DE FORMACIÓN : BÁSICA PARTICULAR PREREQUISITOS : MATEMATICAS DISCRETAS DEPTO. DE ADSCRIPCIÓN : CIENCIAS COMPUTACIONALES ACADEMIA DE ADSCRIPCIÓN : ESTRUCTURAS Y ALGORITMOS CARGA HORARIA GLOBAL : 80 HORAS CARGA HORARIA SEMANAL : 4 HORAS VALOR EN CRÉDITOS : 11 CRÉDITOS OBJETIVO GENERAL : COMPRENDER Y APLICAR LOS MODELOS MATEMÁTICOS PROPIOS DE ESTE CURSO PARA REPRESENTAR CON ELLOS SISTEMAS DEL MUNDO REAL, ENFOCANDO EL CONOCIMIENTO DE MANERA PRINCIPAL Y OBTENER LOS ANTECEDENTES NECESARIOS PARA PODER IMPLEMENTAR LAS ETAPAS DE ANALISIS DE UN COMPILADOR. OBJETIVO ESPECÍFICO : EN CADA MÓDULO DEL CONTENIDO TEMATICO PRINCIPAL FECHA DE MODIFICACIÓN : JULIO 2005 CALENDARIO DE APLICACIÓN : 2006A CC209 Teoría de la computación Academia de Estructuras y Algoritmos Pág. 1 de 4 UNIVERSIDAD DE GUADALAJARA DIVISION DE ELECTRONICA Y COMPUTACION DEPARTAMENTO DE CIENCIAS COMPUTACIONALES TEORIA DE LA COMPUTACION CONTENIDO TEMÁTICO PRINCIPAL Objetivo General: Comprender las diferentes gramáticas y lenguajes formales y su utilización eficiente en la creación de aplicaciones. Módulo 1: Gramáticas y Lenguajes Formales (13hrs) Objetivo Particular: entender la forma en que los lenguajes naturales se pueden definir matemáticamente (como lenguajes formales) para su mejor comprensión, enfatizando los aspectos que hacen similares o diferentes a ambas representaciones. 1.1 1.2 1.3 1.4 1.5 1.6 Conceptos introductorios. Lenguajes Formales y sus operaciones. Gramáticas formales y su diseño. Caracterización de una Gramática. Jerarquía de Chomsky. Forma Normal de Chomsky (CNF). Módulo 2: Las Gramáticas Formales en la Computación (4hrs) Objetivo Particular: Aplicar los conocimientos sobre Gramáticas Formales en la descripción de los lenguajes de programación, con el propósito de desarrollar parte de un compilador, o para entender su operación. 2.1 Forma Normal de Backus-Naur (BNF) 2.2 Árboles de derivación. 2.3 Conceptos importantes en el diseño de lenguajes de programación. Módulo 3: Autómatas de Estado Finito. (26 hrs.) Objetivo Particular: Obtener las bases necesarias para el diseño de analizadores lexicográficos y comprender la gran variedad de aplicaciones que se pueden representar y simular con este tipo de Módulos. 3.1. Concepto y Representación del Modelo. 3.2 Desarrollo de un Autómata Finito. 3.3 Autómatas de expresiones Regulares. 3.4 Relación entre Autómatas Finitos y Gramáticas Regulares. 3.5 Autómatas Finitos: deterministas y no deterministas. 3.6 Desarrollo de una aplicación de Máquinas de Estado Finito. 3.7 Limitaciones de los Autómatas de Estado Finito. 3.8 Concepto de Máquinas de Estado Finito. 3.9 Representación de Máquinas de Estado Finito. 3.10 Desarrollo de una aplicación de Máquinas de Estado Finito. 3.11 Relación y diferencias de los Autómatas de Estado Finito con las Máquinas de Estado Finito. CC209 Teoría de la computación Academia de Estructuras y Algoritmos Pág. 2 de 4 Módulo 4: Autómatas de Pilas. (13 hrs.) Objetivo Particular: Obtener las bases para el diseño de estos dispositivos para aplicarse como analizadores sintácticos en un compilador. 4.1 Concepto y representación de Autómatas de Pila. 4.2 Relación entre Autómatas de Pila y Gramáticas Libres de Contexto. 4.3 Limitaciones de los Autómatas de Pila. Módulo 5: Máquinas de Turing. (14 hrs.) Objetivo Particular: Conocer el poder computacional de estas máquinas en el contexto de la solución de problemas de reconocimiento de lenguajes. 5.1 Concepto y representación de Máquinas de Turing. 5.2 Máquinas de Turing como aceptadores de Lenguajes. 5.3 Construcción de Máquinas de Turing. 5.4 El problema de la parada. Módulo 6: Computabilidad (10 hrs.) Objetivo Particular: Entender que el diseño de algoritmos presenta limitaciones en ciertos casos, que impiden su representación adecuada. 6.1 Complejidad de los cálculos. 6.2 Complejidad de los algoritmos. 6.3 Complejidad de los problemas. 6.4 Problemas NP. 6.5 Problemas irresolubles. Criterios de evaluación Exámenes Departamentales.......................................................................................60% Implementaciones de aplicaciones............................................................................20% Tareas individuales (resolución de ejercicios) y trabajos especiales........................20% Metodología y recursos a utilizar Se debe impartir como curso teórico, haciendo énfasis en los modelos y algoritmos de operaciones y, como ejercicio de programación avanzada, se debe orientar a los alumnos la codificación de los algoritmos y revisarlos y discutirlos en clase. Los recursos a utilizar varían según la clase. Bibliografía Básica Lenguajes Formales y Teoría de la Computación, John _Martin, Editorial Mc Graw Hill. Teoría de Autómatas y Lenguajes Formales, Dean Kelley., Editorial Prentice Hall. Introd.a la Teoría de Autómatas, Lenguajes y Computación, John E. Hopcroft y Jeffrey D. Uliman. Editorial CECSA. Teoría de la Computación, J. Glenn Brookshear, Editorial Addison Wesley Iberoamericana. CC209 Teoría de la computación Academia de Estructuras y Algoritmos Pág. 3 de 4 Bibliografía Complementaria Compiladores, Alfred V. ]Aho, Ravi Sethi y Jeffrey D. Uliman., Editorial addison Wesley Iberoamericana. Matemáticas Discretas., Richard Johnsonbaugh., Editorial Iberoamericana. Lenguajes de Programación, Ravi Sethi., Editrorial Addison Wesley. Introducción a las Ciencias de la Computación, J. Glenn Brookshear., Editorial Addison Wesley. Como comentario adicional se puede decir que otros textos con títulos semejantes a los cuatro anteriores, pueden ser considerados como parte de esta bibliografía complementaria Modalidad de Enseñanza y Aprendizaje En virtud de que el contenido del curso es adecuado para que alumno desarrolle su creatividad, se recomienda que se le asesore para que pueda utilizar su iniciativa para descubrir la solución a los problemas con los que se habrá de encontrar. Además se le pueden solicitar tareas de investigación que hagan que el curso avance en forma más fluida. CC209 Teoría de la computación Academia de Estructuras y Algoritmos Pág. 4 de 4