Objetivo General:
Analizar computacionalmente e implementar en C++
algoritmos de inteligencia artificial utilizados para
programar aplicaciones de agentes inteligentes.

Dirigido a estudiantes que:
1. disfrutan programar y
2. tienen interés por el cómputo científico.

Contenido:
1. Red neural de retropropagación
2. Mapa auto-organizado
3. Adaptive Boosting
4. Algoritmo genético clásico
5. Q-learning
6. Redes bayesianas
7. Árboles de decisión

El alumno desarrollará soluciones de cómputo donde se requiera la aplicación del computo móvil y ubicuo.

Este es el primer curso formal de cómputo móvil y ubicuo para la Maestría en Ciencias de la Computación,  el cual es base para esta área de investigación.

En este curso se estudian las cadenas de Markov en tiempo discreto y continuo. Se hace énfasis en las propiedades teoricas de este tipo de modelos matemáticos, al igual que sus aplicaciones en diferentes áreas del conocimiento.

El curso es una introducción a la solución de problemas de sistemas de ecuaciones lineales utilizando el lenguaje de programación C y bibliotecas numéricas, además de metodologías que son estándar en la disciplina. El curso está compuesto de una parte teórica donde se describe la formulación de cada método de solución de un sistema de ecuaciones lineales, así como una parte práctica donde el alumno implementará en el laboratorio diversos problemas modelo para comprender el uso de cada método.

El objetivo de este curso es presentar al alumnos con las técnicas y métodos básicos de Visión Computacional, considerando temas esenciales, que van desde los componentes básicos del esquema propuesto por Marr,  modelos ópticos y geométricos de formación de imágenes, caracterización de rasgos y formas, seguimiento dinámico de objetos y  la generación de modelos geométricos de los objetos observados en la escena.

Los humanos son los objetos que más se utilizan en los videojuegos, debido a que nos identificamos plenamente con su representación y movimiento. El movimiento de un humano es articulado, ya que consta de partes rígidas (huesos) y partes deformables (piel, músculos).

El movimiento articulado tiene su base en la rotación de vectores, que básicamente es una operación matricial. El fundamento del movimiento humano se encuentra en la animación de los huesos, que en conjunto forman una jerarquía denominada esqueleto.

El objeto humano se representa con una malla poligonal, la cual deberá estar adherida al esqueleto, proceso llamado Skinning. El Skinning se logra mediante el seguimiento del esqueleto por los polígonos de la malla, los cuales realizan rotaciones y traslaciones.

La interacción de objetos en ambientes virtuales se produce por el movimiento de éstos. Esta interacción es básicamente la colisión entre los objetos. Para detectar la colisión de dos objetos, se requiere de las posiciones de los objetos y del cálculo de la distancia entre ellos.

La forma de un objeto es esencial para determinar su distancia hacia los otros objetos, ya que objetos con formas básicas como la esfera o el cuadrado, tienen un cálculo fácil. Objetos con formas variadas como humanos, plantas, automóviles, requieren de muchos cálculos para determinar su cercanía a los demás objetos.

Las fases para detectar colisiones entre dos objetos son la fase larga (broad phase) que determina la cercanía entre los objetos, la fase corta (narrow phase) que dice las regiones en colisión de los objetos, y la fase de contacto ( contact phase ) que devuelve el vértice, arista o plano de lo polígonos en colisión.