Listado de Cursos

 


 

Cada curso es de un total de 60 horas, cuatro horas a la semana. Dependiendo del contenido, los cursos incluyen sesiones de laboratorio y prácticas en la computadora.
 

 


Contenido condensado de los cursos de posgrado

 

Aprendizaje Máquina. El objetivo es presentar al estudiante un panorama general sobre el diseño y evaluación de interfaces Hombre-Máquina. Se realiza la importancia del diseño apropiado de interfaces para investigadores, académicos e industriales. Se proporcionan las herramientas, técnicas y conocimientos  para sensibilizar al público en general sobre el uso de la computadora. A lo largo del curso se examinan las teorías de alto nivel (implícitas y explícitas), el modelo Foley/Van Dam (para diseño Top-Down), el modelo Goms, el modelo de etapas de acción, el modelo de interfaz objeto-acción, y los principios y lineamientos empleados en el diseño de interfaces hombre máquina. Se enfatiza  el diseño de interfaces usando la ingeniería de la usabilidad y las formas de realizar e interpretar las pruebas  realizadas al usuario final de un sistema.

 

Aritmética Computacional. Se estudian los métodos, algoritmos y técnicas de mejora de desempeño necesarias para obtener implementaciones eficientes de operaciones aritméticas en sistemas computacionales con recursos restringidos y en dispositivos de hardware reconfigurable PGAs. Los conceptos y técnicas a ser revisados en este curso hacen un énfasis especial en algoritmos de la aritmética de campos finitos y su correspondiente implementación en dispositivos FPGA's. Para la implementación en circuitos programables se revisan las técnicas de diseño de sistemas digitales, unidades aritméticas y unidades de control. Se hace una breve introducción de la modelación de tales circuitos mediante VHDL.

  

Códigos y Criptografía. Este curso presenta las bases matemáticas utilizadas en el diseño de códigos de criptografía. Se revisa la aritmética de grandes números, generación de sucesiones y funciones aleatorias y seudo-aleatorias, procedimientos de flujo de datos (stream), teoría de códigos algebráicos, códigos lineales, códigos de Reed-Muller generalizados, códigos de Reed-Solomon generalizados, métodos de llave pública RSA y autentificación de criptografía de curvas elípticas.

  

Computabilidad y Complejidad. Se presenta el concepto de computabilidad mediante máquinas de Türing. Se muestran los conceptos de recursividad y el problema de incompletitud de las teorías recursivas, vale decir, computables demostrada primeramente por Kurt Gödel. Se presentan algunos problemas clásicos NP-completos exhibidos por Karp. El objetivo es presentar la teoría de complejidad y la intractabilidad de los problemas NP-completos. Mencionando finalmente, algunos resultados que hacen posible la conjetura P=NP.

 

Computación Paralela. El propósito de este curso es discutir técnicas y aplicaciones de la programación paralela. El curso se concentra en el uso de varias computadoras que se comunican entre ellas mediante el envío de mensajes. La programación paralela involucra muchos aspectos que no se presenta en la programación convencional (secuencial). El diseño de un programa paralelo tiene que considerar, entre otras cosas, el tipo de arquitectura sobre la cual se va a ejecutar el programa, las necesidades de tiempo y espacio que requiere la aplicación, el modelo de programación paralelo adecuado para implantar la aplicación y la forma de coordinar y comunicar a diferentes procesadores para que resuelvan un problema común. Existen varias herramientas disponibles para programación paralela. En el curso se revisan los paquetes PVM y MPI, dado su alta disponibilidad para computadoras diferentes y su aceptación en la comunidad académica. Entre los tópicos discutidos se encuentran: modelos de programación y arquitecturas paralelas, el proceso de diseño de programas paralelos, programación para memoria compartida, programación para memoria distribuida, programación paralela para mejorar el rendimiento, lenguajes de programación paralela y diseño de algoritmos paralelos para problemas específicos.

  

Cómputo Basado en Redes. El propósito del curso es entender los conceptos fundamentales y desarrollar las habilidades de programación requeridos para la construcción de sistemas distribuidos basados principalmente en la arquitectura cliente/servidor. En el curso se analizan algunas de las tecnologías de Internet, conocidas generalmente como middleware (TCP/IP, sockets, RPC, RMI, CORBA y DCOM), que facilitan el desarrollo de dichas aplicaciones y que han sido incorporadas al lenguaje de programacion Java. El curso incluye prácticas y proyectos de programación que enfatizan conceptos como sistemas abiertos, interoperabilidad, portabilidad, seguridad e integración.

 

Cómputo Móvil. Se presentan los conceptos más importantes asociados a las plataformas de teléfonos móviles y los lenguajes de programación más importantes de la actualidad para dispositivos móviles.

Base de Datos. Se presenta diversos modelos de datos que son abstracciones matemáticas para representar la informacion del mundo real en datos y conocimiento.

  

Fundamentos Algebraicos. El principal objetivo de este curso es el de introducir los conceptos básicos de las estructuras algebraicas. El conocimiento de estas estructuras es indispensable para el estudio de las ciencias computacionales modernas, por lo que el material a ser cubierto en este curso sirve como base teórica para el estudio de temas tales como teoría de códigos, criptología, etc.

 

Geometría Computacional. Se analizan los principales algoritmos, desde su complejidad y realización, que se utilizan para manipular entidades geométricas en dos y tres dimensiones.

 

Graficación. El objetivo es proporcionar los fundamentos para graficación interactiva. Se trata con las matemáticas para representaciones geométricas en dos y tres dimensiones.  Se plantean las transformaciones geométricas y las estructuras de datos se tratan con detalle para ser usadas en el modelado de objetos. Se pretende que el estudiante sea capaz de trazar una escena y de entender las formas bi y tridimensionales que la componen, además de las técnicas para manipularla y visualizarla. La herramienta de trabajo, para desarrollar las tareas del curso, es un sistema de desarrollo de interfaces gráficas (GUI, por sus siglas en inglés) basado en objetos, llamado Qt (www.troll.no) y OpenGL (www.opengl.org) o Mesa (www.mesa3d.org) para la contrucción y manipulación de escenas tridimensionales.

  

Inteligencia Artificial. El objetivo consiste en presentar fundamentos en Inteligencia Artificial y sus aplicaciones. El primer tema que aborda el curso es la Representación de Conocimiento en base a la lógica. Se ve entonces la lógica de predicados, modelado de imprecisión y razonamiento inexacto, redes semánticas, marcos, scripts, etc. Para la solución de problemas, tratamos conestrategias de búsqueda, considerando búsquedas AND/OR y el método AO*.

  

Introducción a la Computación Evolutiva. Se estudian los conceptos básicos de las técnicas más importantes de computación evolutiva. Se hace especial énfasis en los algoritmos genéticos. Inicialmente, se hace un recorrido histórico en el que se resumen los logros más importantes en torno a la simulación de los procesos evolutivos como una herramienta para el aprendizaje y la optimización. Posteriormente, se analizan y comparan de manera general los 3 paradigmas principales que se utilizan hoy en día en la computación evolutiva: las estrategias evolutivas, la programación evolutiva y los algoritmos genéticos. En cada caso se abordará su inspiración biológica, su motivación, su funcionamiento y algunas de sus aplicaciones. Finalmente, se estudiará a mayor detalle el funcionamiento, fundamentos teóricos, implementación y operación de los algoritmos genéticos, que es actualmente el paradigma evolutivo más utilizado por los investigadores que trabajan en esta disciplina.

 

Introducción al Cómputo Reconfigurable. Se presentan los elementos básicos para crear arquitecturas y algoritmos que utilicen dispositivos programables.

Introducción a la Probabilidad. Se estudian los principios básicos de la teoría de la probabilidad junto con algunas aplicaciones de ésta. Se familiariza al estudiante con distintas distribuciones de probabilidad las cuales son utilizadas frecuentemente en otras áreas de las ciencias computacionales.
 
Lenguajes de Programación.El alumno conozca los conceptos más importantes asociados al diseño del lenguaje de programación, así como los principales paradigmas de programación, para permitirle realizar una evalución critica de los lenguales existentes y futuros, y desarrollar criterios  para elegir el lenguaje más apropiado para resolver un determinado problema de programación.
 
 

Lógica Matemática. El objetivo del curso es presentar los conocimientos básicos de la Lógica de Proposiciones y de Predicados de Primer Orden con aplicaciones a la Demostración Automática de Teoremas. Se hace énfasis en el principio de resolución de Robinson, mostrando diversas estrategias en el sistema de inferencias. Se estudian Lógicas Modales y Polivalentes. El curso es básico para Programación Lógica, Inteligencia Artificial y, en general, para las Ciencias de la Computación.

 

Lógica y Base de Datos. El objetivo es dar una caracterización a las Bases de Datos desde el punto de vista de la Lógica. Se plantean los modelos minimales de: Suposición del Mundo Cerrado (CWA), negación como falla y circunscripción. Se plantean dos diferentes clases de bases de datos deductivas: definidas e indefinidas. Se consideran algoritmos, estructuras y técnicas de implementación para los sistemas de tal naturaleza.

 

Minería de Datos. Se proporcionan conocimientos básicos sobre teoría y práctica de la Minería de Datos para tratamiento de información.

 

Modelado y Simulación de Sistemas. Este curso proporciona una introducción al modelado de sistemas usando técnicas matemáticas y simulación por computadora. Entre las técnicas matemáticas utilizadas se encuentran redes de Petri y sistemas de eventos discretos. Entre las técnicas computacionales se utilizan los paquetes MODSIM y Arena. Al final del curso, los estudiantes tendrán conocimientos suficientes para realizar simulaciones efectivas.

 

Optimización Combinatoria. Revisar diferentes meta-heurísticas para realizar optimización combinatoria, tales como: Recocido Simulado, Búsqueda Tabú y Colonias de Hormigas.

 

Optimización en Ingeniería. Se estudian diversos métodos de programación matemática para resolver problemas de optimización no lineal (principalmente sin restricciones). El curso enfatiza aspectos algorítmicos y de implementación sobre los aspectos teóricos, por lo que es necesario tener al menos conocimientos básicos de programación en C/C ++. También se requieren conocimientos de cálculo, trigonometría, geometría y álgebra.

Procesamiento Digital de Imágenes. En este curso se enseñan las diversas técnicas del procesamiento de imagen para realce, segmentación, interpretación y reconocimiento de imagen. Se estudia también la transformada de Fourier y la transformada Coseno de imágenes. Las prácticas se realizan en el lenguaje de programación C++ y el paquete para diseño de interfaces de usuario Qt (www.troll.no). El procesamiento de imagen puede definirse como la extracción de características a partir de los pixels que constituyen una imagen. Las técnicas pueden asemejarse a "una caja de herramientas'' y, dependiendo de la aplicación, se escogen las adecuadas para resolver un problema, por lo que resulta necesario conocer la mayor cantidad de estas "herramientas'', esto es, las técnicas del procesamiento de imagen.

Programación Concurrente. Se estudian los mecanismos para compartir y controlar recursos, los mecanismos basados en paso de mensajes. Se estudian además lenguajes académicos de programación concurrente, tales como Pascal -S, SR. Se revisan los conceptos fundamentales en el diseño e implementación de aplicaciones multitarea y se ilustra el uso de bibliotecas para el desarrollo de aplicaciones multi-hilo, tales como: Pthreads, Java-Threads.

  

Realidad Virtual. Se estudia la tecnología actual para realizar realidad virtual y sus aplicaciones, analizando los aspectos de ingeniería, científicos y aspectos funcionales de sistemas de realidad virtual y los fundamentos de modelado de mundos virtuales y su programación. Se tratan las técnicas de imagen para la generación de ambientes tridimensionales (3D): creación de modelos, diseño de escenarios, iluminación, texturas, interiores, exteriores y perpectiva.

Reconocimiento de Patrones. Se revisan los procesos en ingeniería, computación y matemáticas relacionados con objetos físicos y/o abstractos, con el propósito de extraer información que permita establecer propiedades de o entre conjuntos de dichos objetos.

Redes Neuronales Artificiales. Se analizan y aplican algunos modelos clásicos de Redes Neuronales Artificiales (RNA) para la resolución de problemas y descubrir la estrecha relación entre la neurobiología, la probabilidad, la estadística y la computación para la resolución de problemas modelando las RNA inspiradas en el sistema nervioso.

 

Redes de Computadoras. En este curso el alumno conocerá las tecnologías involucradas en las redes de computadoras analizadas a través de la arquitectura por capas siguiendo un enfoque descendente. Presentar los principios básicos de la arquitectura TCP/IP y su implementación en Internet. Se revisarán distintas alternativas de interconexión de redes, la función y problemática de cada una de las capas del modelo ISO/OSI. Se dará especial énfasis a las capas de aplicación, transporte y de red del modelo de referencia de Internet. El alumno conocerá los protocolos básicos dentro de cada capa. Complementará los estudios teóricos con implementaciones básicas de algunos de los algoritmos y protocolos analizados. Analizará algunos aspectos generales de gestión de redes y de nuevas tecnologías de redes inalámbricas.

Robots Móviles Inteligentes. Se revisan los fundamentos de los aspectos computacionales utilizados en robots móviles autónomos. Estudiar los componentes de un robot móvil: percepción, visión, planeación, navegación, construcción de mapas y localización. Aplicar los conocimientos adquiridos en el desarrollo de proyectos con robots móviles.

 

Seguridad en Sistemas de Información. Este curso presenta  el conjunto de políticas y mecanismos que permiten garantizar la confidencialidad, la integridad y la disponibilidad de los recursos de un sistema. Se estudia  la seguridad (física y lógica) en una organización,  las políticas y modelos de seguridad (en el sector militar, comercial y financiero), y los medios automatizados para probar tales políticas (Otter y Pruebas de consistencia). Se estudian también los principios criptología (criptosistemas simétricos y asimétricos, Data Encryption Standard, Message Digest Algorithm y Certificados), la certificación de sistemas, la seguridad en Internet (principales vulnerabilidades y soluciones), Herramientas de protección en Unix (Kerberos y S/Key), lógicas de autentificación (lógica BAN), herramientas de monitoreo de Unix (COPS, SATAN,  TRIPWIRE, etc.) y Firewalls. Finalmente se estudian los modos de operación de algunos virus y las  formas de ataque que pueden presentarse en redes de computadoras así como las formas de detectarlos y combatirlos.

Sistemas Colaborativos Distribuidos. Se familiariza al alumno con los fundamentos teóricos y prácticos del campo de investigación multidisciplinario denominado "Trabajo Cooperativo Asistido por Computadora" (CSCW por sus siglas en inglés), haciendo énfasis en el estudio de los sistemas computacionales (Groupware por su denominación en inglés) que soportan grupos de personas comprometidas en un proyecto común y que proveen una interfaz a un entorno compartido. En particular, se analizan las arquitecturas de distribución fundamentales para permitir a personas físicamente distribuidas comunicar, colaborar y coordinar sus actividades como si estuvieran cara a cara. Asimismo, se estudian los principales mecanismos propuestos para administrar la compartición de la información, tanto a nivel de interfaz de grupo como a nivel de núcleo funcional. Este dominio de investigación ha contribuido a la evolución de diversos dominios de aplicación, entre los que se encuentran los sistemas de mensajes, los editores de grupo, los sistemas de soporte para la toma de decisiones en grupo, las salas de reuniones virtuales, las conferencias por computadora, los agentes inteligentes, los sistemas de coordinación (workflows) y la enseñanza/aprendizaje colaborativo.

  

Sistemas Distribuidos. El curso tiene como objetivo aprender los principios fundamentales sobre sistemas distribuidos, revisando los tópicos más importantes sobre el diseño y construcción de sistemas distribuidos. Entre los conceptos revisados se encuentran los siguientes: redes de computadoras, concurrencia, disponibilidad de recursos, transparencia, seguridad, modelos de sistemas y arquitecturas distribuidos, sistemas cliente/servidor, aplicaciones WWW, herramientas de programación (Java y llamados a procedimientos remotos RPC), algoritmos distribuidos, relojes lógicos, sincronización de relojes, exclusión mutua distribuida, manejo de interbloqueos distribuidos, consensos, balance de carga en sistemas distribuidos, despachadores distribuidos, transacciones distribuidas, control de concurrencia, recuperación, confiabilidad y disponibilidad, replicación, cómputo distribuido confiable, seguridad y protección, conceptos básicos de criptografía.

Sistemas Empotrados. En este curso se cubren los conceptos, estructuras y mecanismos de los sistemas empotrados, empleados en muchas plataformas incluyendo robótica y manufactura avanzada, aplicaciones interactivas y multimedia, así como sistemas ubicuos. Los sistemas empotrados contienen componentes hardware y software, lo que requiere un diseño simultáneo de ambos aspectos. Se describirán conceptos básicos sobre los métodos de especificación y modelos computacionales para la representación de diseños, incluyendo los aspectos de síntesis de interfaces y métodos de diseño de bajo consumo.

  

Sistemas de Tiempo Real. El objetivo del curso es plantear los conceptos y modelos de sistemas en tiempo real, así como la programación de los mismos. La meta es capacitar al alumno para hacer herramientas de software para resolver problemas en tiempo real, en particular, problemas enfocados al control de procesos por computadora y comunicación de datos. El enfoque de programación es el de concurrencia, tratando el problema de exclusión mutua, con solución mediante semáforos. En el curso se desarrolla la implementación de una máquina virtual de tiempo real.

 

Teoría de Autómatas. El curso hace énfasis en aspectos formales de lingüística algebraica visto desde el dominio de semigrupos. El curso desarrolla la teoría de lenguajes formales desde el punto de vista de sus gramáticas generadoras y sus dispositivos que reconocen (autómatas). El principal énfasis es en aspectos matemáticos de lenguajes formales con dominio en álgebra de semigrupos. Se trata la jerarquía de Chomsky con: lenguajes regulares, libres de contexto y sensibles al contexto. En él curso se plantea la relación entre el concepto de máquina y semigrupo, proporcionando un enfoque diagramático a la composición de cascada. Se trata el teorema de Krohn-Rhod.

  

Tópicos Selectos Sobre Inteligencia Artificial: Agentes y Multiagentes. Los sistemas multiagentes surgieron en el campo de la investigación de tecnología de la información en la década de los 90' s. Un agente es un sistema o componente de software, el cual es capaz de cooperar para resolver problemas específicos. El objetivo del curso es dar una visión introductoria a los agentes autónomos y a los sistemas multiagentes desde el punto de vista teórico como práctico. Se explicarán las diferentes arquitectura de agente (reactiva,  deliberativa e híbrida), así como los mecanismos de interacción, coordinación y cooperación entre sistemas multiagentes. Las aplicaciones son diversas: control de procesos industriales, comercio electrónico, subastas, etc.

 

Tópicos Selectos Sobre Inteligencia Artificial: Introducción a la Optimización Evolutiva Multiobjetivo. En este curso se estudiarán los conceptos básicos de la optimización multiobjetivo, así como el uso de los algoritmos evolutivos en esta área. El material cubierto abarca desde los orígenes de la optimización multiobjetivo (en economía y planeación), hasta los avances más recientes. Además de analizar las técnicas evolutivas multiobjetivo de mayor uso en la actualidad, se estudiarán otras heurísticas que también han sido extendidas para lidiar con problemas multiobjetivo (p.ej., la colonia de hormigas), discutiendo sus ventajas y limitantes principales. Adicionalmente, se revisará el trabajo teórico realizado en esta área y se discutirán algunos de los temas de investigación futura que han permanecido poco explorados durante los últimos años.

 

Tópicos Selectos Sobre Inteligencia Artificial: Razonamiento Aproximado. El tratamiento de la incertidumbre constituye uno de los campos fundamentales de la Inteligencia Artificial (IA), ya que está presente en todas las aplicaciones de la IA (sistemas expertos, control automático, aprendizaje por una máquina, etc). En el curso se estudiarán los diferentes modelos de razonamiento aproximado; se desarrollará una base de conocimientos; y se diseñaría y construirá un prototipo que muestre el razonamiento aproximado, de acuerdo con alguno de los modelos estudiados.

 

Tópicos Selectos Sobre Inteligencia Artificial: Sistemas de Soporte a la Toma de Decisiones.  Estudio de metodologías y herramientas, matemáticas y computacionales, para el análisis, diseño y desarrollo de sistemas de soporte a la Toma de Decisiones. Estudio de las metodologías y herramientas para el análisis, diseño y desarrollo de los procesos involucrados en la Toma de Decisiones. Estudio de los lenguajes para el análisis, diseño y desarrollo de sistemas de soporte a la Toma de Decisiones. Estudio las técnicas de Inteligencia Artificial, de Teoría de Juegos y de Administración del Conocimiento, con las cuales se fundamenta el desarrollan de sistemas Inteligentes para la Toma de Decisiones.

  

Tópicos Selectos en Computación Científica I. Se estudian la teoría y los métodos matemáticos computacionales para la resolución de algunos problemas de ingeniería, física, química y biología. Se hace énfasis en ecuaciones lineales de orden n y sistemas ecuaciones diferenciales de primer orden. Abordando el problema de condiciones iniciales y el problema de valores a la frontera. El problema de Sturm-Liouville es tratado como un problema de valores a la frontera regular y como un problema de valores propios. Se estudia el método de Monte Carlo para simulación y solución de algunos problemas cientifícos y de ingeniería.

 

Tópicos Selectos en Computación Científica II. Se estudian los modelos y métodos matemáticos computacionales haciendo énfasis en aspectos algebraicos, geométricos y de visualización. Se estudian teoría de grupos de matrices de rotación con aplicación a algunos problemas físicos. Visualización de geometría del espacio fase en las soluciones de ecuaciones diferenciales. Autómatas Celulares y sistemas dinámicos discretos es tratado en este curso como un nuevo ambiente para modelar problemas de ecosistemas y físicos.

 

Tópicos Selectos en Criptografía. Este curso presenta una selección de los descubrimientos más recientes en criptografía. El curso inicia con un análisis y recuento de las primitivas usadas en criptografía, seguido por una discusión de los esquemas que han sido propuestos recientemente para realizar criptografía simétrica y de llave pública.

 

Tópicos Selectos en Complejidad Computacional. Revisión de los aspectos clásicos de la teoría de los problemas NP-completos y la investigación reciente relacionada con la caracterización de problemas NP-completos.

 

Tópicos Selectos en Redes Neuronales Artificiales. Aplicación de los métodos neuronales a la resolución de problemas complejos inspirándonos en el funcionamiento de nuestro cerebro para su concepción modular, local, distribuida y paralela con el fin de crear sistemas fácilmente adaptables e integrables a otros.

 

Tópicos Selectos en Sistemas Digitales: VHDL. En este curso el estudiante aprende a diseñar circuitos digitales por computadora, usando prevalentemente la heramienta XILINX. Durante el curso se hace especial énfasis en el diseño esquemático y VHDL. Al final del curso el estudiante realizara un circuito de control digital completo. El curso se desarrolla en dos niveles uno teórico y el otro real en laboratorio.

 

Tópicos Selectos en Teoría de Códigos. En la última década hemos presenciado numerosos y significativos avances en la teoría de códigos. El material de este curso se propone motivar el conocimiento de la teoría de códigos, así como presentar algunos de los últimos avances alcanzados en esta disciplina. El curso inicia con una introducción a la teoría de la información de Shannon para después discutir y analizar las propiedades y cotas teóricas de códigos específicos de corrección de error.

 

Tópicos Selectos en Visualización. Se revisan los fundamentos matemáticos del modelado geométrico de dominios en una, dos y tres dimensiones  con un enfoque clásico y moderno. Se ve primero  un estudio riguroso de las curvas y superficies como son: curvatura, torsión, curvaturas principales, curvatura media y total de Gauss, líneas de curvatura asintótica y no-asintótica, líneas conjugadas, etc. En la segunda parte se estudia el ajuste de curvas y de superficies de sólidos suaves (diferenciables), utilizando tanto interpolación lineal y no lineal clásica. Se termina con las técnicas de modelación geométricas basadas en funciones B-splines, curvas de Bezier y los parches de Coon y Fergunson.

 

Visión. En este curso se aplicarán las nociones de visión por Computadora (VC) en tres dimensiones. La meta de VC es deducir las propiedades y estructura de un mundo tridimensional a partir de una o más vistas bidimensionales. Primero se estudiarán algunas técnicas para procesamiento y análisis de imagen y también se tratarán temas de visualización 3D, animación y realidad virtual, para la creación de modelos tridimensionales y para tener la habilidad de "navegar" a través de ellos. La herramientas de trabajo serán la librería de procesamiento de imágenes scimagen, y Qt (www.trolltech.com) para el desarrollo de las interfaces gráficas y Mesa (www.mesa3d.org) para interactuar con objetos tri-dimensionales.