Lenguajes y Autómatas I
Lenguajes y Autómatas I
1. Caracterización de la asignatura
El desarrollo de sistemas basados en computadora y la búsqueda de soluciones para problemas de procesamiento de información son la base tecnológica de la
carrera de Ingeniería en Sistemas.
Todo egresado de esta ingeniería debe poseer los conocimientos necesarios para resolver de manera óptima cualquier problema relacionado con procesamiento
de información. El conocimiento de las características, fortalezas y debilidades de los lenguajes de programación y su entorno le permitirán proponer las mejores
soluciones en problemas de índole profesional y dentro de las realidades de su entorno.
Como parte integral de la asignatura, se debe promover el desarrollo de las habilidades necesarias para que el estudiante implemente sistemas sujetándose en
los estándares de desarrollo de software, esto con el fin de incentivar la productividad y competitividad de las empresas donde se desarrollen. Sin duda alguna,
los problemas que se abordarán requerirán la colaboración entre grupos interdisciplinarios, por ello el trabajo en grupos es indispensable. Debe quedar claro que
los proyectos que serán desarrollados son de diversas áreas y complejidades, y en ocasiones requieren la integración de equipos externos. Esta complejidad
debe considerarse una oportunidad para experimentar con el diseño de interfaces hombre-máquina y máquina-máquina.
Como todos sabemos, un mismo problema puede ser resuelto computacionalmente de diversas formas. Una de las condiciones a priori de la asignatura, es el
conocimiento de las arquitecturas de computadoras (microprocesadores) y de las restricciones de desempeño que deben considerarse para la ejecución de
aplicaciones. Esto aportará los conocimientos que le permitirán al estudiante desarrollar aplicaciones eficientes en el uso de recursos. De manera adicional, es
posible que se integren dispositivos externos dentro de las soluciones. En este aspecto, el papel del profesor como guía es fundamental. Es importante
diversificar la arquitectura de las soluciones planteadas. Si la inclusión de algún componente de hardware facilita la solución, se recomienda que sea incluido.
Esta área, por sus características conceptuales, se presta para la investigación de campo. Los estudiantes tendrán la posibilidad de buscar proyectos que les
permitan aplicar los conocimientos adquiridos durante las sesiones del curso. El desarrollo de este proyecto es una oportunidad excelente para aplicar todos los
conceptos, técnicas y herramientas orientadas al modelado. La formalidad con que se traten estos aspectos dotará al estudiante de nuevos conceptos,
procedimientos y experiencia.
En esta asignatura se abordan todos los temas relacionados con teoría de lenguajes formales, algo que permite vislumbrar los procesos inherentes, y a veces,
escondidos dentro de todo lenguaje. Las formas de representación formal, procesamiento e implementación de lenguajes de programación se atacan desde un
punto de vista de implementación. Los proyectos relacionados y los ejercicios de investigación acercan a los estudiantes al campo de lenguajes formales, base de
los procesos de comunicación. Por último se revisan algunos de los puntos eje de la investigación de frontera que aún contienen problemas abiertos, un incentivo
para la incorporación de estudiantes a las áreas de investigación.
Las asignaturas directamente vinculadas son estructura de datos por las herramientas para el procesamiento de información que proporciona (árboles binarios,
pilas, colas, tablas de Hash), todas aquellas que incluyan lenguajes de programación, porque son las herramientas para el desarrollo de cualquiera de las
ITTG-AC-PO-004-08 Rev. 4
prácticas dentro de la asignatura y permitirán un enfoque práctico para todos los temas de la misma. La materia de arquitectura de computadoras dota al
estudiante de los conocimientos sobre la estructura de registros, modos de direccionamiento, conjunto de operadores, y le da al estudiante una visión sobre cómo
mejorar el desempeño de lenguajes.
Esta materia sirve de preámbulo para la asignatura de lenguajes y autómatas II, en la cual se completa el estudio formal de la teoría de lenguajes. A su vez
permitirá el desarrollo de las siguientes competencias específicas:
Evaluación de lenguajes de programación: evaluar un conjunto de lenguajes de programación con base en un problema a resolver y elegir el mejor de ellos para
el problema en particular.
Análisis y síntesis para la solución de un problema: dado un problema, proponer el mejor lenguaje que se ajusta a las especificaciones del mismo. Si no hay
lenguaje disponible, proponer las características del lenguaje ideal para el problema a resolver.
Definir, diseñar, construir y programar las fases del analizador léxico y sintáctico de un traductor o compilador.
ITTG-AC-PO-004-08 Rev. 4
Subtemas: Actividades de enseñanza Actividades de aprendizaje Criterios de evaluación
1.1 Alfabeto. Aplicar una evaluación diagnóstica. Asistir al 100% de las clases. Evidencias
1.2 Cadenas. cognoscitivas
1.3 Lenguajes Discutir con el grupo el objetivo del curso. Sintetizar la información expuesta. Glosario 5%
1.4 Tipos de lenguajes Desarrollo de glosario a partir de
1.5 Herramientas Fomenta la lectura sobre el tema, el archivos indicados por el profesor.
Evidencias
computacionales ligadas con trabajo en equipo y participación en clase.
lenguajes Construir su propio conocimiento procedimentales
1.6 Estructura de un traductor Induce la participación y discusión de los
1.7 Fases de un compilador temas de la unidad
Evidencias
Exponer sobre conceptos de la unidad. actitudinales
Instrumentos de evaluación (Rubrica, lista de cotejo, etc.)
2.1. Definición formal de una Exponer los conceptos de la unidad. Asistir al 100% de las clases. Evidencias
ER Resolver ejercicios en clase explicando cognoscitivas
2.2. Operaciones las reglas de ER Sintetizar la información expuesta. Problemario 10%
2.3. Aplicaciones en Examen 10%
problemas reales. Construir su propio conocimiento
Diseño de problemario con ejercicios que
Evidencias
permitan: Generar cadenas a partir de Resolución de ejercicios propuestos por
una expresión regular, Obtener una el profesor procedimentales
expresión regular a partir de un grupo de
cadenas o viceversa, Obtener una
expresión regular a partir de la Evidencias
descripción de un caso de estudio. actitudinales
ITTG-AC-PO-004-08 Rev. 4
No. de la Horas teórico-
3 Tema de la unidad: Autómatas finitos. 15
unidad: prácticas
Competencia específica de la unidad Desarrollo de competencias genéricas
• Capacidad de análisis y síntesis
Capacidad de organizar y planificar
Crear un AF mediante un lenguaje de programación. • Comunicación oral y escrita
• Habilidad para buscar y analizar información proveniente de fuentes diversas
• Solución de problemas
• Toma de decisiones.
• Capacidad crítica y autocrítica
• Trabajo en equipo
• Capacidad de aplicar los conocimientos en la práctica
• Habilidades de investigación
• Capacidad de aprender
• Habilidad para trabajar en forma autónoma
Subtemas: Actividades de enseñanza Actividades de aprendizaje Criterios de evaluación
ITTG-AC-PO-004-08 Rev. 4
Fuentes de información Apoyos didácticos
1. Hopcroft John E., Introducción a la Teoría de Autómatas,
Lenguajes y Computación, 2da ed, Ed. Addison Wesley, 2004. Equipo de cómputo.
2. Lemote Karen A. , Fundamentos de compiladores Cómo traducir al Cañón.
lenguaje de computadora, Ed. Compañía Editorial Continental. Pizarrón
ITTG-AC-PO-004-08 Rev. 4
4.1 Definición formal MT Evidencias
4.2 Construcción modular de Exponer los conceptos de la unidad. Asistir al 100% de las clases. cognoscitivas
una MT Resolver ejercicios en clase explicando Problemario 10%
4.3 Lenguajes aceptados por su solución. Sintetizar la información expuesta. Examen 10%
la MT.
Diseño de problemario con ejercicios que Construir su propio conocimiento.
Evidencias
permitan: Diseño de autómatas finitos a
partir del lenguaje o expresión regular Resolución de ejercicios propuestos por procedimentales
identificando su tipo, convertir NFA a DFA el profesor
Evidencias
actitudinales
ITTG-AC-PO-004-08 Rev. 4
No. de la Horas teórico-
unidad:
5 Tema de la unidad: Análisis léxico. prácticas
10
Competencia específica de la unidad Desarrollo de competencias genéricas
• Capacidad de análisis y síntesis
Construir un analizador léxico a partir de un lenguaje de programación o un Capacidad de organizar y planificar
analizador léxico (p. e. Flex, Lex, JavaCC). • Comunicación oral y escrita
• Habilidad para buscar y analizar información proveniente de fuentes diversas
• Solución de problemas
• Toma de decisiones.
• Capacidad crítica y autocrítica
• Trabajo en equipo
• Capacidad de aplicar los conocimientos en la práctica
• Habilidades de investigación
• Capacidad de aprender
• Habilidad para trabajar en forma autónoma
ITTG-AC-PO-004-08 Rev. 4
Instrumentos de evaluación (Rubrica, lista de cotejo, etc.)
8.- DISEÑO DE LÉXICO PARA LENGUAJE DE PROGRAMACIÓN CREADO (EQUIPO)
NIVELES DE DESEMPEÑO
Suficiente 70 Bueno 80 Notable 90 Excelente 100
Software sin errores. Software sin errores. Software sin errores. Software sin errores.
Justificación de lenguaje de programación Software hecho por integrantes del Software hecho por integrantes del Software hecho por integrantes del
creado equipo(no copia) equipo(no copia) equipo(no copia)
Diseño de 5 a 10 token´s de lenguaje de Justificación de lenguaje de programación Justificación de lenguaje de programación Justificación de tokens y lenguaje de
programación creado. Incluir Autómata. creado creado programación creado
Por cada token reglas léxicas (expresión Diseño de 5 a 10 token´s de lenguaje de Diseño de 10 token´s de lenguaje de Diseño más de 10 token´s de lenguaje de
regular) programación creado. Incluir Autómata. programación creado. Incluir Autómata. programación creado. Incluir Autómata.
Por cada token reglas léxicas (expresión Por cada token reglas léxicas (expresión Por cada token reglas léxicas (expresión
regular) regular) regular)
Entrega puntual.
ITTG-AC-PO-004-08 Rev. 4
11.- PROGRAMACIÓN DE SINTAXIS PROPUESTA POR EL PROFESOR (EQUIPO)
NIVELES DE DESEMPEÑO
Suficiente 70 Bueno 80 Notable 90 Excelente 100
Software sin errores. Software sin errores. Software sin errores. Software sin errores.
Programación de la gramática propuesta Programación de la gramática propuesta Software hecho por integrantes del Software hecho por integrantes del
por el profesor por un método sintáctico. por el profesor por DOS métodos equipo(no copia) equipo(no copia)
sintácticos.
Programación de la gramática propuesta Programación de la gramática propuesta
por el profesor por dos métodos por el profesor por dos métodos
sintácticos. sintácticos.
Entrega puntual.
ITTG-AC-PO-004-08 Rev. 4
Registro de avance de la gestión del curso
ITTG-AC-PO-004-08 Rev. 4