Syllabus

SCD-1015 LENGUAJES Y AUTOMATAS I

DR. JOSE LUIS LIRA TURRIZA

jlira@itescam.edu.mx

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

Prerrequisitos
MATEMÁTICAS PARA COMPUTADORA:
  1. Realizar operaciones de Conjuntos.
  2. Validar problemas matemáticos por medio de inducción matemática.
  3. Diseñar grafos dirigidos a partir de un problema planteado.
FUNDAMENTOS DE PROGRAMACION:
  1. Manejar los conceptos de Programación, Lenguaje de Programación y Código Fuente
  2. Ejecutar y diseñar algoritmos en la resolución de problemas.

Competencias Atributos de Ingeniería
Crear un AF mediante 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
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
Diseñar y construir o simular una MT   Aplicar, analizar y sintetizar procesos de diseño de ingeniería que resulten en proyectos que cumplen las necesidades específicas

Normatividad
1. Presentar los ejercicios en la hora y el día programados
2. Respetar a sus compañeros en sus comentarios

Materiales
No se requieren materiales adicionales a los especificados en la programación de clases.

Bibliografía disponible en el Itescam
Título
Autor
Editorial
Edición/Año
Ejemplares
Lenguajes formales y teoría de autómatas /
Giró, Juan
Alfaomega,
2015.
1
-
Compiladores : principios, técnicas y herramientas /
Aho, Alfred V.
Pearson educación,
2a. / 2008.
3
Si

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.
                           Juan Manuel, Cueva Lovelle. 2001. Lenguajes, Gramáticas y Autómatas. Segunda Edición. Universidad de Oviedo. Pag. 3
                           Ramón, Brena. Autómatas y Lenguajes, un enfoque práctico. Tec de Monterrey. México 2003. Pags 3-11
                           Introducción (76179 bytes)
                          
                   1.1.2. Obtener un alfabeto a partir de un lenguaje.
                           Traductor (208096 bytes)
                          
                   1.1.3. Investigar la estructura de diferentes traductores.
                           Compilador (103936 bytes)
                          
                   1.1.4. Estructurar mediante un diagrama, las fases de un compilador.
                           Forma Normal de Chomsky (200192 bytes)
                           Forma Normal de Geribach (84480 bytes)
                          
                   1.1.5. *Estructurar mediante un diagrama, las fases de un compilador
                           Herramientas - Gramáticas (43632 bytes)
                          
2. Expresiones Regulares
          2.1. Crear y reconocer ER para solucionar problemas del entorno
                   2.1.1. Investigar las expresiones regulares y sus operaciones
                          
                   2.1.2. Generar cadenas a partir de una expresión regular.
                          
                   2.1.3. Obtener una expresión regular a partir de un grupo de cadenas o visceversa.
                          
3. Autómatas Finitos
          3.1. Crear un AF mediante un lenguaje de programación.
                   3.1.1. Determinar la notación formal de un AF.
                           Autómatas Finitos (110053 bytes)
                          
                   3.1.2. Conocer la diferencia entre un AFN y AFD.
                           Clasificación de AF (97792 bytes)
                          
                   3.1.3. Construir un AF a partir de un ER.
                           Autómatas Finitos y su Reducción (176309 bytes)
                           Autómatas Finitos ND y su Reducción (170344 bytes)
                          
                   3.1.4. Construir un AF a partir de la descripción de un caso de estudio.
                           ER y los Autómatas Finitos (161964 bytes)
                          
                   3.1.5. Convertir un AFN a AFD.
                           Ramón, Brena. Autómatas y Lenguajes, un enfoque práctico. Tec de Monterrey. México 2003. pags 47-53
                          
                   3.1.6. Minimizar estados en un AF.
                           http://trevinca.ei.uvigo.es/~formella/doc/talf05/talf/node1.html
                          
4. Análisis Léxico
          4.1. Diseñar y construir o simular una MT
                   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.
                          
                   4.1.3. Definir las reglas de un lenguaje de programación propio.
                          
                   4.1.4. Identificar patrones válidos y distinguir los errores léxicos, generar autómatas y tabla de tokens del lenguaje propuesto.
                          
                   4.1.5. Construir un analizador léxico mediante un lenguaje de programación. (Utilizar un generador de analizador léxico como ejemplo).
                          
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 Básicos (118784 bytes)
                           Estructura y Funcionamiento (34816 bytes)
                           Aho, Alfred; Sethi, Ravi; Ullman, Jeffrey. Compiladores, Principios, Técnicas y herramientas. Addison - Wesley.1998. pags 85-88
                           http://www.gedlc.ulpgc.es/docencia/seminarios/rit/Analisis_lexico/sld001.htm
                          
                   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 (BackusNaur Form).
                           Expresiones Regulares (79360 bytes)
                           Definiciones de ER (64000 bytes)
                          
                   5.1.3. Investigar las formas normales de Chomsky y Conocer la notación de los diagramas de sintaxis.
                           Tabla de Símbolos (81408 bytes)
                           Tabla de Símbolos (78848 bytes)
                           Administración (895393 bytes)
                          
                   5.1.4. Construir diagramas de sintaxis de un lenguaje.
                           Administración de Errores (52736 bytes)
                          
                   5.1.5. Construir una GLC a partir de los diagramas de sintaxis.
                           JtLex (53942 bytes)
                          
                   5.1.6. Eliminar la ambigüedad de una gramática.
                           http://dinosaur.compilertools.net/
                          
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.
                          
                   6.1.2. Construir una MT a partir de un caso de estudio.
                          
                   6.1.3. Simular a través de un lenguaje de alto nivel, la representación de una MT
                          

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

Cronogramas (20232024P)
Grupo Actividad Fecha Carrera
6 A 1.1.1 Definir alfabetos y lenguajes en un caso de estudio. 2024-01-29 ISIC-2010-224
6 A 1.1.2 Obtener un alfabeto a partir de un lenguaje. 2024-01-30 ISIC-2010-224
6 A 1.1.3 Investigar la estructura de diferentes traductores. 2024-02-06 ISIC-2010-224
6 A 1.1.4 Estructurar mediante un diagrama, las fases de un compilador. 2024-02-19 ISIC-2010-224
6 A 2.1.1 Investigar las expresiones regulares y sus operaciones 2024-02-20 ISIC-2010-224
6 A 2.1.2 Generar cadenas a partir de una expresión regular. 2024-02-26 ISIC-2010-224
6 A 2.1.3 Obtener una expresión regular a partir de un grupo de cadenas o visceversa. 2024-02-27 ISIC-2010-224
6 A 3.1.1 Determinar la notación formal de un AF. 2024-03-04 ISIC-2010-224
6 A 3.1.2 Conocer la diferencia entre un AFN y AFD. 2024-03-05 ISIC-2010-224
6 A 3.1.3 Construir un AF a partir de un ER. 2024-03-11 ISIC-2010-224
6 A 3.1.4 Construir un AF a partir de la descripción de un caso de estudio. 2024-03-12 ISIC-2010-224
6 A 3.1.5 Convertir un AFN a AFD. 2024-03-19 ISIC-2010-224
6 A 4.1.1 Elaborar por equipo, la identificación de lexemas, componentes léxicos y patrones a partir de un lenguaje. 2024-04-22 ISIC-2010-224
6 A 4.1.2 Conocer los elementos de una tabla de tokens. 2024-04-23 ISIC-2010-224
6 A 4.1.3 Definir las reglas de un lenguaje de programación propio. 2024-05-06 ISIC-2010-224
6 A 4.1.4 Identificar patrones válidos y distinguir los errores léxicos, generar autómatas y tabla de tokens del lenguaje propuesto. 2024-05-07 ISIC-2010-224
6 A 4.1.5 Construir un analizador léxico mediante un lenguaje de programación. (Utilizar un generador de analizador léxico como ejemplo). 2024-05-13 ISIC-2010-224
6 A 4.1.5 Construir un analizador léxico mediante un lenguaje de programación. (Utilizar un generador de analizador léxico como ejemplo). 2024-05-14 ISIC-2010-224
6 A 5.1.1 Identificar la notación formal de una gramática. 2024-05-20 ISIC-2010-224
6 A 5.1.1 Identificar la notación formal de una gramática. 2024-05-21 ISIC-2010-224

Temas para Segunda Reevaluación