Dr. Francisco Javier Zaragoza Martínez
Proyecto de Integración de Ingeniería en Computación
El proyecto de integración consta de dos UEA obligatorias: 1100103
Seminario de Integración de Ingeniería en Computación y 1100113
Proyecto de Integración de Ingeniería en Computación I. También se
pueden considerar hasta tres UEA optativas: 1100123 Proyecto de
Integración de Ingeniería en Computación II, 1100133 Introducción al
Trabajo de Investigación en Ingeniería en Computación y 1151028
Trabajo de Investigación en Ingeniería en Computación. La seriación
de estas UEA permite cursarlas en dos a cuatro trimestres a
conveniencia de los alumnos, considerando que cada proyecto de
integración tiene una vigencia establecida por el Comité de Estudios
de Ingeniería en Computación. Uno de los propósitos del seminario es
el de presentar una propuesta viable y fundamentada de proyecto de
integración. Existe un documento
que describe este proceso para los alumnos de Ingeniería en
Computación.
En vista de que hay alumnos de Ingeniería en Computación interesados
en realizar sus proyectos de integración he decidido crear esta
página donde mantendré una lista de ideas generales de proyectos. Por generales quiero decir
que ninguna de estas ideas debe considerarse como un proyecto de
integración sino tal vez como varios proyectos de integración
relacionados de los cuales un alumno podría seleccionar una parte
que le interese para desarrollarla conmigo. Adicionalmente, a partir
del trimestre 2013 Otoño, en caso de que quieran hacer su proyecto
de integración conmigo deberán participar en el Concurso
de programación de la UAM y llevar los cursos del Área de
concentración en Algoritmos e inteligencia artificial.
Algoritmos y combinatoria
Mis áreas principales de investigación
son el análisis y diseño de algoritmos de optimización combinatoria
y el estudio de estructuras combinatorias. Trabajo con problemas de
cartero y otros problemas de transporte, con problemas de
acoplamiento y flujo, con problemas de coloración de gráficas, con
problemas de eliminación de cuadrados y más recientemente con
problemas de triangulación y cuadrangulación de superficies. Alguno
de estos temas podría ser recomendable para alumnos con cierta
inclinación por las matemáticas y con excelentes habilidades de
programación, características necesarias para alguien que esté
planeando estudiar una maestría o doctorado en optimización
o en ciencias de la computación.
- Rodríguez Villalobos, Cynthia Adriana. "Algoritmos para la
coloración robusta de árboles binarios". Proyecto terminal,
Universidad Autónoma Metropolitana Azcapotzalco, 2008.
- Olaguibert Segura, C. A. "Generación de polígonos con
triangulaciones ortogonales". Proyecto terminal, Universidad
Autónoma Metropolitana Azcapotzalco, 2009.
- Zambrano Gerbacio, R. "Implementación de un algoritmo de
aproximación para el problema del cartero con restricciones en
los arcos". Proyecto terminal, Universidad Autónoma
Metropolitana Azcapotzalco, 2013.
- Tapia de la Rosa, A. "Tres algoritmos para desplazar un robot
en el plano en presencia de obstáculos". Proyecto terminal,
Universidad Autónoma Metropolitana Azcapotzalco, 2013.
- Pérez Arcos, J. A. "Encajes primitivos de gráficas planares
exteriores". Proyecto de integración, Universidad Autónoma
Metropolitana Azcapotzalco, 2014.
- Hernández Muñoz, V. M. "Aplicación para dispositivos con
Android que encuentre la mejor ruta entre dos estaciones del
Metro". Proyecto terminal, Universidad Autónoma Metropolitana
Azcapotzalco, 2013.
- Alfaro Quintero, C. D. "Encajes primitivos de árboles planos".
Proyecto terminal, Universidad Autónoma Metropolitana
Azcapotzalco, 2013.
- Santana González, J. J. "Diseño de reglas de Golomb óptimas".
Proyecto de integración, Universidad Autónoma Metropolitana
Azcapotzalco, 2014.
- Vazquez Casas, Gualberto. "Cálculo de flujos elegantes en
gráficas triconexas". Proyecto de integración, Universidad
Autónoma Metropolitana Azcapotzalco, 2013.
- Sánchez Navarro, Baudelio. "Algoritmo glotón para el problema
de intersectar rayos con segmentos de recta". En proceso.
- Faustinos Vargas, José Daniel. "Identificación de una
configuración en un conjunto de puntos en el plano". Proyecto de
integración, Universidad Autónoma Metropolitana Azcapotzalco,
2015.
- Hernández Camargo, César. "Programación de agentes móviles
para desplazar un objetivo". En proceso.
- Martínez Juárez, Saúl. "Algoritmo y heurística para incrustar
métricas en una línea". Proyecto de integración, Universidad
Autónoma Metropolitana Azcapotzalco, 2017.
- Amezcua Jiménez, Christopher Jaffet. "Algoritmo y heurística
para el problema de entrega el mismo día". En proceso.
- Márquez Navarrete, Zelzin Marcela. "Heurísticas para
acoplamientos euclidianos sin cruces". Proyecto de integración,
Universidad Autónoma Metropolitana Azcapotzalco, 2017.
- Muñoz del Real, Fany. "Algoritmo que encuentra la mejor ruta
posible a seguir por un barco sujeto a la acción del viento". En
proceso.
- Valenzuela Jaramillo, Emmanuel. "Algoritmo y heurística para
el problema de recolección de un banco de alimentos". Proyecto
de integración, Universidad Autónoma Metropolitana Azcapotzalco,
2017.
- Martínez Huitrón, Miguel Ángel. Heurísticas para la cobertura
mutua bipartita. En proceso.
Optimización de distribuciones de teclados alfanuméricos
Existen al menos dos tipos de teclados alfanuméricos de uso común:
los teclados de dispositivos grandes
(como los de una computadora) y los teclados de dispositivos pequeños (como los de un
teléfono). La distribución de las teclas en un teclado de
computadora suele seguir el estándar QWERTY el cual fue diseñado
para disminuir la
velocidad de escritura en inglés
en una máquina de escribir mecánica. La distribución de las teclas
en un teclado de teléfono suele seguir el orden alfabético. En ambos
casos uno se puede preguntar si esos diseños son convenientes en el
ámbito del idioma español,
si son convenientes cuando lo que se desea es aumentar la velocidad de
escritura o si son convenientes en un sistema con menos teclas que
caracteres alfanuméricos. Propongo estudiar el diseño de algoritmos
que encuentren mejores distribuiciones de teclados grandes (por
ejemplo: minimizando el movimiento esperado de los dedos de las
manos), el diseño de algoritmos que encuentren mejores
distribuiciones de teclados pequeños (por ejemplo: mejorando las
capacidades predictivas durante la escritura) y el diseño de
distribuciones de teclados novedosas. Lean la sección 4.10 del libro
The Algorithm Design Manual de Steven S. Skiena o este artículo.
- González Sánchez, R. "Distribuciones alternativas de letras en
un teléfono celular". Proyecto terminal, Universidad Autónoma
Metropolitana Azcapotzalco, 2008.
- Morales León, A. "Algoritmo para la predicción de mensajes de
texto en español escritos en teléfono celular". Proyecto
terminal, Universidad Autónoma Metropolitana Azcapotzalco, 2010.
- Limón López, E. J. "Distribución alternativa de letras en
teclado de PC para escritura en español". Proyecto terminal,
Universidad Autónoma Metropolitana Azcapotzalco, 2010.
- Méndez Rosiles, J. R. "Diseño de teclado con teclas de tamaño
adaptativo". Proyecto terminal, Universidad Autónoma
Metropolitana Azcapotzalco, 2012.
Sistemas de apoyo a las coordinaciones
Sistemas de ayuda para las coordinaciones de ingeniería.
- Estrada Rivera, J. J. "Sistema de administración de proyectos
terminales". Cancelado.
- Villarruel Barajas, A. E. "Asignación óptima para el uso de
laboratorios y talleres de la División de Ciencias Básicas e
Ingeniería". Proyecto terminal, Universidad Autónoma
Metropolitana Azcapotzalco, 2012.
- Montalvo López, J. A. "Sistema para la revisión de propuestas
de proyectos terminales de Ingeniería en Computación". Proyecto
terminal, Universidad Autónoma Metropolitana Azcapotzalco, 2012.
- Faustinos Vargas, J. D. "Diagrama de seriación interactivo
para las ingenierías de la UAM Azcapotzalco". Cancelado.
- Torres González, D. A. "Recomendación de inscripción para
Ingeniería en Computación". Proyecto de integración, Universidad
Autónoma Metropolitana Azcapotzalco, 2013.
Evaluación automática de programas
Una de las tareas más laboriosas durante el desarrollo de un curso
básico de programación es la de la evaluación de los programas
escritos por los alumnos. Esta evaluación consta de al menos dos
componentes: el decidir si un programa resuelve correctamente la
tarea pedida y el decidir si dos programas supuestamente distintos
en realidad lo son. Normalmente estas dos componentes se realizan a
mano, consumiendo una buena cantidad del tiempo de los profesores y
alentando el tiempo de entrega de resultados a los alumnos. En ambos
casos uno se puede preguntar si estas dos tareas se pueden
automatizar en cierta medida. Propongo diseñar un sistema automático
de evaluación que sea capaz de determinar una calificación para cada
programa enviado y que genere reportes de utilidad para los alumnos
(por ejemplo: sus calificaciones) y para los profesores (por
ejemplo: qué parejas de programas resultan ser muy parecidas). En
este último caso, propongo estudiar el diseño de algoritmos que
encuentren similitudes entre dos códigos fuente (escritos por
ejemplo en C, C++, Fortran, Java, Pascal, etc.). Podemos encontrar
algunas referencias sobre este tema en Berkeley,
Chile,
Karlsruhe, Michigan,
Sheffield
y Virginia.
- García Rodríguez, L. E. "Obtención de una medida cuantitativa
de similitud de códigos fuente en lenguaje C". Proyecto
terminal, Universidad Autónoma Metropolitana Azcapotzalco, 2007.
- Castro Campos, R. A. "Evaluador de programas fuentes en
lenguaje C con entradas y salidas descritas mediante una cadena
de formato". Proyecto terminal, Universidad Autónoma
Metropolitana Azcapotzalco, 2007.
- Pérez Pérez, S. L. "Adaptación del detector de copias para
códigos fuente escritos en C++ y Java". Proyecto terminal,
Universidad Autónoma Metropolitana Azcapotzalco, 2008.
- García Isario, D. "Administración de cuentas para cursos en un
servidor Linux". Proyecto terminal, Universidad Autónoma
Metropolitana Azcapotzalco, 2009.
- Castelán Chávez, E., Hernández Sánchez, L. F. y Vargas Rosas,
R. "Sistema de evaluación automática de programas". Proyecto
terminal, Universidad Autónoma Metropolitana Azcapotzalco, 2012.
Algoritmos y estructuras de datos
Diseño de software didáctico para la enseñanza de algoritmos y
estructuras de datos, tanto los elementales como los avanzados.
- Hernández Hernández, F. A. y Hernández Piña, H. C. "Plataforma
de juego programable para Quoridor". Proyecto terminal,
Universidad Autónoma Metropolitana Azcapotzalco, 2010.
- Hermosillo García, F. y López Rubio, D. "Generación y solución
de rompecabezas Rush Hour". Proyecto terminal, Universidad
Autónoma Metropolitana Azcapotzalco, 2010.
- Salazar Barrón, E. J. "Algoritmo para resolver el juego de
prisioneros y guardias". Cancelado.
- García Arévalo, G. "Implementación de una interfaz gráfica
interactiva para algoritmos de ordenamiento y estructuras tipo
árbol". Proyecto terminal, Universidad Autónoma Metropolitana
Azcapotzalco, 2012.
- Mares Martínez, J. C. "Implementación de una interfaz gráfica
interactiva para algoritmos de ordenamiento y estructuras tipo
árbol". Proyecto de integración, Universidad Autónoma
Metropolitana Azcapotzalco, 2014.
- Bocanegra Rodríguez, J. A. y Tovar González, Y. "Visualización
de algoritmos de ordenamiento y búsqueda interna con Tikz".
Proyecto terminal, Universidad Autónoma Metropolitana
Azcapotzalco, 2010.
- García Gaspar, A. D. "Un lenguaje de programación para los
temas de Programación Estructurada". Cancelado.
- Torres Jiménez, P. E. "Algoritmo de búsqueda de
configuraciones de enlaces ortogonales en dos y tres
dimensiones". Proyecto terminal, Universidad Autónoma
Metropolitana Azcapotzalco, 2011.
- Ramos León, A. D. "Algoritmos para plegado de mapas
cuadrados". Proyecto terminal, Universidad Autónoma
Metropolitana Azcapotzalco, 2012.
Inclusión y equidad
Sistemas de cómputo que mejoren las condiciones de inclusión y
equidad de las personas.
- Ramírez Cabrera, Esteban. "Sistema integrador de subtítulos
para personas con discapacidades auditivas". Cancelado.
- Montiel Saavedra, Alejandra. "Visualización de incidencias en
la Ciudad de México". Proyecto de integración, Universidad
Autónoma Metropolitana Azcapotzalco, 2017.
Otros temas
A sugerencia de los alumnos interesados, pero en temas que me
interesen.
- Villegas Hernández, J. D. "Transmisión de mensajes en archivos
de imágenes y texto usando esteganografía". Proyecto terminal,
Universidad Autónoma Metropolitana Azcapotzalco, 2009.
- Pérez García, A. "Transmisión de archivos binarios cifrados
usando esteganografía en imágenes GIF". Proyecto de integración,
Universidad Autónoma Metropolitana Azcapotzalco, 2014.
- Adriano Rivas, C. M. "Esteganografía de mensajes de texto en
párrafos justificados". Proyecto terminal, Universidad Autónoma
Metropolitana Azcapotzalco, 2010.
- Barboza García, M. "Esteganografía de texto en audio WAV sin
compresión". Proyecto terminal, Universidad Autónoma
Metropolitana Azcapotzalco, 2010.
- Valencia Arana, M. E. "Esteganografía de archivos usando
redundancia cíclica en imágenes JPEG". Proyecto terminal,
Universidad Autónoma Metropolitana Azcapotzalco, 2011.
- Chávez Sanabria, K. N. "Transmisión de mensajes de texto en
audio ogg usando esteganografía". Proyecto terminal, Universidad
Autónoma Metropolitana Azcapotzalco, 2011.
- Rodríguez Camacho, Manuel. "Análisis de una aplicación con
interfaz web, implementada en dos sistemas basados en
microcontroladores: un Arduino y uno hecho a la medida".
Proyecto de integración, Universidad Autónoma Metropolitana
Azcapotzalco, 2014.
- García Díaz, Liliana. "Sistema auxiliar para compartir
información de docencia entre páginas web". Proyecto de
integración, Universidad Autónoma Metropolitana Azcapotzalco,
2015.
- Maldonado Barrios, Abraham Jorge Antonio. "Compresión de
secuencias de ADN utilizando un sistema embebido". Proyecto de
integración, Universidad Autónoma Metropolitana Azcapotzalco,
2015.