Syllabus

SCD-1015 LENGUAJES Y AUTOMATAS I

DR. JOSE ALFONSO CUEVAS BACAB

jacuevas@itescam.edu.mx

Semestre Horas Teoría Horas Práctica Créditos Clasificación
6 3 2 5 Ciencia Ingeniería

Prerrequisitos
CONOCIMIENTOS PREVIOS: Conoce, comprende y aplica las estructuras de datos, métodos de ordenamiento y búsqueda para la optimización del rendimiento de soluciones de problemas del contexto.

Competencias Atributos de Ingeniería
Identifica los conceptos de lenguajes formales para comprender las fases de un compilador y traductor.   Identificar, formular y resolver problemas de ingeniería aplicando los principios de las ciencias básicas e ingeniería
Crea y reconoce Expresiones Regulares para solucionar problemas del entorno.   Identificar, formular y resolver problemas de ingeniería aplicando los principios de las ciencias básicas e ingeniería
Crea y reconoce autómatas finitos en un lenguaje de programación para la solución de un problema.   Identificar, formular y resolver problemas de ingeniería aplicando los principios de las ciencias básicas e ingeniería
Construye un analizador léxico a partir de un lenguaje de programación.   Aplicar, analizar y sintetizar procesos de diseño de ingeniería que resulten en proyectos que cumplen las necesidades específicas
Construye un analizador sintáctico a partir de un lenguaje de programación.   Aplicar, analizar y sintetizar procesos de diseño de ingeniería que resulten en proyectos que cumplen las necesidades específicas
Diseña y construye o simula una Maquina de Turing (MT), para el reconocimiento de cadenas propias de lenguajes.   Aplicar, analizar y sintetizar procesos de diseño de ingeniería que resulten en proyectos que cumplen las necesidades específicas

Normatividad
  1. Es necesario para el alumno tener una asistencia mínima del 80% para presentar sus exámenes.
  2. Los retardos aplican después del pase de lista y hasta 15 minutos después de haber iniciado la sesión.
  3. Para justificar las faltas se requiere de un documento oficial.
  4. Presentar los ejercicios en la hora y el día programados.
  5. Los trabajos documentales serán entregados en tiempo y forma para tener validez.
  6. Cualquier actitud y/o acción que denote mala conducta hacia el docente o sus compañeros se sancionará con suspensión y afectación de la calificación.
  7. No se permite entrar al salón con alimentos y bebidas.

    ACTIVIDADES EN MOODLEEN LINEA POR CONTINGENCIA DE SALUD
  1. P2A1U4S1 Entrega de trabajoTarea

  2. CONTINUANDO CON LAS ACTIVIDADES POR CONTINGENCIA DE SALUD, LAS CUALES ESTAN ALOJADAS EN EL MOODLE
  3. P2A1U5F1 Gramáticas
  4. P2A2U5S2 Análisis Sintáctico
  5. P2A2U5F2 Gramática personalizada
  6. P2A2U6P2 Máquinas de Turing

Materiales
  1. Libreta de apuntes.
  2. Computadora.

Bibliografía disponible en el Itescam
Título
Autor
Editorial
Edición/Año
Ejemplares

Parámetros de Examen
PARCIAL 1 De la actividad 1.1.1 a la actividad 3.1.6
PARCIAL 2 De la actividad 4.1.1 a la actividad 6.1.3

Contenido (Unidad / Competencia / Actividad / Material de Aprendizaje)
1. Introducción a la Teoría de Lenguajes Formales.
          1.1. Identifica los conceptos de lenguajes formales para comprender las fases de un compilador y traductor.
                   1.1.1. Definir alfabetos y lenguajes en un caso de estudio.
                           Ramón, Brena. AUTOMATAS Y LENGUAJES, Un enfoque práctico.Tec de Monterrey. México 2003. Pags 3-11
                           uan Manuel, Cueva Lovelle. 2001. Lenguajes, Gramáticas y Autómatas. Segunda Edición. Universidad de Oviedo. Pag. 3
                           John E. Hopcroft Rajeev Motwani Jeffrey D. Ullman. Teoría de autómatas, lenguajes y computación. 2007. pp. 24-27
                           Introducción (406601 bytes)
                           Hopcroft, J. E.; Motwani, R.; Ullman, J. D. Introducción a la teoría de autómatas, lenguajes y computación. Madrid, 2007. Pags 2-4 (4116139 bytes)
                          
                   1.1.2. Obtener un alfabeto a partir de un lenguaje.
                           Intérpretes y Diseño de Lenguajes de Programación (208096 bytes)
                          
                   1.1.3. Investigar la estructura de diferentes traductores.
                           Traductor y su estructura (123921 bytes)
                          
                   1.1.4. Estructurar mediante un diagrama, las fases de un compilador.
                           Jerarquia de Chomsky y Fases de un compilador (112421 bytes)
                          
2. Expresiones Regulares.
          2.1. Crea y reconoce Expresiones Regulares para solucionar problemas del entorno.
                   2.1.1. Investigar las expresiones regulares y sus operaciones.
                           Expresiones Regulares (576950 bytes)
                           Expresiones Regulares (1100496 bytes)
                          
                   2.1.2. Generar cadenas a partir de una expresión regular.
                           Metodología de diseño de las ER (1548422 bytes)
                          
                   2.1.3. Obtener una expresión regular a partir de un grupo de cadenas o viceversa.
                           Expresiones regulares, gramáticas regulares (1010277 bytes)
                          
3. Autómatas Finitos.
          3.1. Crea y reconoce autómatas finitos en un lenguaje de programación para la solución de un problema.
                   3.1.1. Determinar la notación formal de un autómata finito.
                           Autómatas Finito (110053 bytes)
                          
                   3.1.2. Conocer la diferencia entre un AFND y AFD.
                           Clasificación de Autómata Finito (97792 bytes)
                          
                   3.1.3. Construir un AF a partir de un ER.
                           Reducción de AF (176309 bytes)
                           Reducción de AFND (170344 bytes)
                          
                   3.1.4. Construir un AF a partir de la descripción de un caso de estudio (en grupos de trabajo).
                           ER y AF (161964 bytes)
                          
                   3.1.5. Convertir un AFN a AFD.
                           Simplificación de AF. Pags 47-53 (1938877 bytes)
                          
                   3.1.6. Minimizar estados en un AF.
                           Minimización de Automatas (152942 bytes)
                          
4. Análisis Léxico.
          4.1. Construye un analizador léxico a partir de un lenguaje de programación.
                   4.1.1. Elaborar por equipo, la identificación de lexemas, componentes léxicos y patrones a partir de un lenguaje.
                          
                   4.1.2. Conocer los elementos de una tabla de tokens.
                           Tabla de Símbolos (143821 bytes)
                          
                   4.1.3. Definir las reglas de un lenguaje de programación propio.
                          
                   4.1.4. Identificar patrones válidos, generar autómatas y tabla de tokens del lenguaje propuesto.
                          
                   4.1.5. Distinguir los Errores léxicos.
                          
                   4.1.6. Construir un analizador léxico mediante un lenguaje de programación. (Utilizar un generador de analizador léxico como ejemplo).
                           Construcción de Analizador Lexico (86225 bytes)
                          
5. Análisis Sintáctico.
          5.1. Construye un analizador sintáctico a partir de un lenguaje de programación.
                   5.1.1. Identificar la notación formal de una gramática.
                           Conceptos (118784 bytes)
                           Compiladores Estructura y Funcionamiento (34816 bytes)
                           Gramática Formal (164274 bytes)
                          
                   5.1.2. Buscar la sintaxis de la construcción de los Lenguajes de Programación por medio de GLC o utilizando notación BNF (Backus- Naur Form).
                           Expresiones Regulares (79360 bytes)
                           Sintaxis ER (64000 bytes)
                           Sintaxis BFN (77708 bytes)
                          
                   5.1.3. Investigar las formas normales de Chomsky.
                           Análisis Sintáctico (160200 bytes)
                          
                   5.1.4. Conocer la notación de los diagramas de sintaxis.
                           Notación de los diagramas (138794 bytes)
                          
                   5.1.5. Construir diagramas de sintaxis de un lenguaje.
                           Control de errores (52736 bytes)
                          
                   5.1.6. Construir una GLC a partir de los diagramas de sintaxis.
                           Generador de Analizadores Léxicos Traductores (53942 bytes)
                          
                   5.1.7. Eliminar la ambigüedad de una gramática.
                           Eliminación de ambigüedad (254777 bytes)
                           Ambigüedad (192269 bytes)
                          
6. Máquinas de Turing.
          6.1. Diseña y construye o simula una Maquina de Turing (MT), para el reconocimiento de cadenas propias de lenguajes.
                   6.1.1. Identificar la notación formal de una MT.
                           DefinicIón de una MT (119591 bytes)
                          
                   6.1.2. Construir una MT a partir de un caso de estudio.
                           Maquinas de Turing Pags 105-120 (1964732 bytes)
                          
                   6.1.3. Simular a través de un lenguaje de alto nivel, la representación de una MT.
                           La máquina de Turing en el ámbito de los lenguajes de programación (513087 bytes)
                          

Prácticas de Laboratorio (20232024P)
Fecha
Hora
Grupo
Aula
Práctica
Descripción

Cronogramas (20232024P)
Grupo Actividad Fecha Carrera

Temas para Segunda Reevaluación