Encabezado Facultad de Ciencias
Presentación

Ciencias de la Computación (plan 1994) 2024-1

Optativas, Compiladores

Grupo 7009, 42 lugares. 42 alumnos.
Profesor Miguel Carrillo Barajas lu mi vi 12 a 13 P211
Ayudante Yessica Janeth Pablo Martínez ma ju 12 a 13 P211
Ayud. Lab. ju 14 a 16 Laboratorio de Ciencias de la Computación 1
 
Bienvenidos al curso,

Resumen.

El propósito de este curso de compiladores es
comprender y aplicar conceptos y técnicas utilizadas en la construcción de compiladores de lenguajes de programación.
Brevemente, al terminar el curso los alumnos serán capaces de:
1. Generar una representación interna de archivo de texto de acuerdo a una gramática dada.
Es decir, sabrán cómo construir, o generar, un parser.
2. Transformar la representación interna de texto que satisface una gramática dada
a texto utilizable para propósitos específicos, por ejemplo: ejecución, interpretación, o verificación.
Es decir, a partir de una representación interna, sabrán cómo generar "código".
3. Implementar un parser, y un intérprete, utilizando Haskell, Alex, y Happy.
Para ilustrar los conceptos anteriores el curso utiliza lenguajes pequeños (toy languages).
Durante el desarrollo del curso, señalaremos algunas de las complicaciones que se presentan
cuando se usan lenguajes que no son pequeños (toy).

La comunicación con el grupo (fuera de clase) es mediante un grupo de interés y correo electrónico.


Detalles.

El curso es presencial y cubrirá puntos esenciales del temario oficial.
La asistencia a clases es importante pero no es obligatoria.
Las tareas (de teoría y de laboratorio) no son obligatorias, pero ayudan a aprender, y a responder los exámenes.

La evaluación es el máximo de tres posibilidades (ver detalles al final):
Es posible obtener 10 presentando solamente los exámenes.
Las tareas contribuyen a la calificación de tres posibles maneras: 50%, 20%, o 0%.
Hay puntos adicionales por participaciones especiales en clase.


La metodología del curso opera con los siguientes puntos en forma cíclica:

1. Después de atender dudas, el profesor expone en clase los temas con una explicación crítica y ejemplos.
La exposición de temas se hace reconstruyendo los conceptos, y procurando la participación del grupo.
La notación (definiciones, teoremas, etc) es propia del curso, y se dan referencias a libros de texto.

2. El alumno revisa posibles dudas, estudia, y reconstruye los temas vistos en clase.

3. El alumno resuelve, con supervisión (individualmente y en equipo) ejercicios sobre temas vistos en clase.
Los ejercicios supervisados son base de las Tareas del curso.

4. El alumno revisa posibles dudas, y reconstruye los ejercicios resueltos con supervisión.

5. El profesor atiende dudas sobre temas anteriores, y expone nuevos temas (como en el punto 1)

6. El alumno revisa las dudas atendidas, y estudia los temas nuevos vistos en clase identificando dudas a presentar en la siguiente clase.

7. Fin del ciclo.

La notación de la materia es propia del curso, y es importante que el alumno se mantenga al tanto de los temas vistos.
La asistencia no es factor directo de la evaluación, se usa solamente para estimar el aprendizaje de los temas.

Las tareas incluyen: tareas de teoría, y prácticas de laboratorio.
Las tareas se diseñan procurando evitar trabajo repetitivo (la práctica es decisión del alumno).
En general, las tareas permiten y alientan el trabajo en equipo.
Los ejercicios de programación son base de Tareas del curso.
Es posible que en algunos ejercicios se requieran entregar una solución individual escrita de propia mano.
Las fechas de entrega de las tareas en concordancia con el trabajo ya realizado en clase,
es decir la mayoría de los ejercicios para entregar ya se supervisaron en clase.
Hay ejercicios de programación en Haskell, a nivel básico y con ayuda del profesor.
Si las circunstancias lo permiten, usaremos también una herramienta de verificación formal.

Los exámenes se diseñan procurando incluir preguntas esenciales del curso.
Los exámenes son presenciales con tiempo límite marcado por el horario/día en que se aplica.
Los exámenes pueden incluir preguntas que piden pseudo-código,
o preguntas que piden una variante pequeña de código Haskell visto en clase.

La evaluación considera tres evaluaciones parciales con porcentajes crecientes:
Calificación= Parcial_1*.20 + Parcial_2*.35 + Parcial_3*.45
Parcial_i = Max(Tareas_i*.50 + Examen_i*.50, Tareas_i*.20 + Examen_i*.80, Examen_i) + Puntos_i
Tareas_i = Promedio de Tareas del parcial i
Examen_i = Examen del parcial i
Puntos_i = Puntos adicionales por participación en clases del parcial i
Las fechas de los exámenes se fijarán durante el curso, aprovechando las fechas oficiales de exámenes ordinarios.

La comunicación con el grupo (fuera de clase) es mediante un grupo de interés y correo electrónico.

Miguel Carrillo.

 


Hecho en México, todos los derechos reservados 2011-2016. Esta página puede ser reproducida con fines no lucrativos, siempre y cuando no se mutile, se cite la fuente completa y su dirección electrónica. De otra forma requiere permiso previo por escrito de la Institución.
Sitio web administrado por la Coordinación de los Servicios de Cómputo de la Facultad de Ciencias. ¿Dudas?, ¿comentarios?. Escribenos. Aviso de privacidad.