Listado Completo de Materias
ITC-101: Introducción a la Ingeniería y Tecnologías Computacionales
Objetivo
El objetivo del curso es presentar un panorama general de los métodos, tecnologías, herramientas más modernas de la ingeniería y tecnologías computacionales.
Descripción
Se presentan brevemente las tendencias más importantes en las herramientas, metodologías y tecnologías computacionales. Se revisa la organización de los sistemas de cómputo a pequeña y gran escala, se presenta el papel que juegan los sensores, interfaces y señales como medios de adquisición de información, se revisan los protocolos básicos de los sistemas de comunicaciones, se analiza las diferentes componentes de los dispositivos computacionales modernos, se hace una revisión rápida de los diversos modelos de cómputo desde el circuito combinacional hasta las máquinas de Turing, se hace el contraste de diversos modelos de programación modernos (secuenciales, concurrentes, paralelos, distribuidos, orientado a plataformas), se hace una revisión de las tendencias en cuanto a uso y diseño de los lenguajes de programación, se introducen herramientas de alto nivel para solución de problemas computacionales, se describe el modelo convencional de desarrollo de software en grande y se presentan algunos tendencias recientes sobre las tecnologías computacionales como movilidad, cómputo en la nube, seguridad, cómputo de alto rendimiento, análisis de grandes volúmenes de información, visualización científica, etc.
Contenido
1. Introducción
2. Organización de los sistemas de cómputo
a. Pequeña escala
b. Convencionales
c. Gran escala
3. Sensores, señales e interfaces
a. Sistemas de numeración
b. Cuantización y codificación
c. Adquisición de señales
d. Imágenes digitales
4. Comunicaciones
a. Protocolos
b. Comunicaciones inalámbricas
c. Redes celulares
5. Dispositivos computacionales
a. Teléfonos inteligentes
b. Sistemas Embebidos
c. Procesadores avanzados (GPUs)
6. Modelos de cómputo
a. Circuito Lógico
b. Circuitos con memoria
c. Autómata finito
d. Autómata de pila
e. Máquina de Turing
f. Modelo von Neumann
g. Algoritmo
h. Eficiencia en tiempo y espacio
7. Modelos de programación
a. Programación procedural vs orientada a objetos (*)
b. Programación secuencial vs programación concurrente
i. Cliente-servidor
Llamada a procedimientos remotos
c. Programación secuencial vs programación paralela
i. Threads
d. Programación orientada a plataformas
i. Móviles: Touchdevelop
ii. GPUs
iii. DSPs
8. Lenguajes de programación modernos
a. Programación basada en scripts
b. Python
c. C#
d. Uso de APIs
e. Objective‐C
f. Java-Script
9. Desarrollo de software
a. Modelo para desarrollo de software
b. Aseguramiento de la calidad de software
c. Pruebas de software
d. Desarrollo de software seguro
10. Tendencias modernas en la Ingeniería y Tecnologías Computacionales
a. Simulación
b. Movilidad
c. Cloud Computing
d. Cómputo de Alto Rendimiento
e. Grandes volúmenes de datos
f. Visualización de problemas científicos y de ingeniería
Bibliografía
· Savage, John, E., Models of Computation: Exploring the Power of Computing. Addisson-Wesley Reading, 1998.
· John G. Proakis, Dimitris G. Manolakis, Digital Signal Processing. 4th Ed., Pearson/Prentice Hall, 2007.
· John L. Hennessy, David A. Patterson, Computer Architecture: A Quantitative Approach. 5th Ed., The Morgan Kaufmann Series in Computer Architecture, 2011.
· Peter Barry, Patrick Crowley, Modern Embedded Computing: Designing Connected, Pervasive, Media-Rich Systems. Morgan Kaufmann, 1st Ed., 2012.
· John A. Sokolowski, Catherine M. Banks, Principles of Modeling and Simulation: A Multidisciplinary Approach. Wiley, 1st Ed. 2009.
· Maurizio Gabbrielli, Simone Martini, Programming Languages: Principles and Paradigms. Springer, 2010.
· Aaron Hillegass, Mikey Ward, Objective-C Programming: The Big Nerd Ranch Guide. Big Nerd Ranch Guides, 2nd Ed., 2013.
· Douglas Crockford, JavaScript: The Good Parts. O'Reilly Media, 1st Ed., 2008.
· Jon Skee, C# in Depth. Manning Publications, 3rd Ed., 2013.
· James F. Kurose, Computer Networking: A Top-Down Approach. Addison-Wesley. 5th Ed., 2009.
· Andrew S. Tanenbaum, Computer Networks. Prentice Hall. 5th Ed., 2010.
ITC-102: Matemáticas Computacionales
Objetivo
Ofrecer al estudiante un panorama general de las matemáticas fundamentales para las Ciencias de la Computación.
Descripción
En este curso se estudiarán, a nivel introductorio, las áreas de las matemáticas que han contribuido en mayor medida al establecimiento de la computación como una ciencia. Esto incluye principalmente a las matemáticas de los enteros y otros entes discretos, además de algunos otros temas. Se inicia presentando las ideas básicas del principio de conteo y el razonamiento combinatorio elemental. A continuación se ofrece una introducción general a la lógica matemática, un estudio riguroso de la teoría de conjuntos, el principio de la inducción matemática y los métodos recursivos. Posteriormente se realiza un breve repaso a relaciones y funciones. Después se estudian grafos y árboles, junto con sus principales propiedades. Adicionalmente a los temas de matemáticas discretas, se estudian los tópicos esenciales de álgebra lineal y de probabilidad y estadística. Muchos de los temas se verán reforzados mediante el uso de software de alto nivel como Matlab, Mathematica y Maple. El curso se enfoca principalmente a desarrollar la capacidad del estudiante para resolver problemas.
Contenido
1. Conteo, permutaciones y combinaciones
a. Reglas de la suma y del producto
b. Permutaciones
c. Combinaciones
d. Combinaciones con repeticiones
2. Fundamentos de lógica
a. Conectivas y tablas de verdad
b. Equivalencia lógica
c. Reglas de inferencia
d. Cuantificadores
e. Demostración de teoremas
3. Teoría de conjuntos
a. Conjuntos y subconjuntos
b. Leyes de teoría de conjuntos
c. Conteo y diagramas de Venn
4. Inducción matemática y aritmética entera
a. El principio del buen orden
b. Definiciones recursivas
c. Números primos y el algoritmo de la división
d. Máximo común divisor
e. El teorema fundamental de la aritmética
5. Complejidad computacional
a. Conceptos preliminares
b. Productos cartesianos, relaciones y funciones
i. Funciones especiales
c. Complejidad computacional
d. Concepto de algoritmo
e. Análisis de algoritmos, algoritmos de búsqueda
6. Teoría de grafos
a. Definiciones
b. Subgrafos e isomorfismo de grafos
c. Recorridos y circuitos eulerianos
d. Grafos planos
e. Caminos y ciclos hamiltonianos
f. Árboles y árboles con raíz
7. Álgebra lineal
a. Espacios vectoriales
b. Matrices y determinantes
c. Sistemas lineales de ecuaciones
d. Transformaciones lineales
8. Probabilidad y estadística
a. Espacio de probabilidad
b. Variables aleatorias y funciones de distribución
c. Momentos de variables aleatorias
d. Análisis exploratorio de datos
e. Estimación de parámetros
f. Pruebas de hipótesis
Bibliografía
· Ralph P. Grimaldi, Discrete and Combinatorial Mathematics. Addison Wesley, 5th Ed., 2003.
· Kenneth H. Rosen, Discrete Mathematics and Its Applications. McGraw-Hill, 7th Ed., 2011.
· Richard Johnsonbaugh. Discrete Mathematics. Prentice Hall, 7th Ed., 2007.
· Susanna S. Epp. Discrete Mathematics with Applications. Brooks Cole, 4th Ed., 2010.
· C. W. Curtis, Linear Algebra: An Introductory Approach. Springer, 4th Ed., 1984.
· David Poole, Linear Algebra: A Modern Introduction. Cengage Learning, 4th Ed., 2014.
· James L. Johnson, Probability and Statistics for Computer Science. Wiley Inter- Science, 2003.
· Douglas C. Montgomery, George C. Runger, Applied Statistics and Probability for Engineers. John Wiley & Sons, 6th Ed., 2013.
ITC-103: Tecnologías de Programación
Objetivo
Este curso tiene el objetivo principal de proporcionar a los estudiantes las habilidades para desarrollar programas informáticos eficaces y eficientes, utilizando diferentes técnicas y estilos de programación. Al finalizar el curso, los estudiantes deberán ser capaces de crear software de la más alta calidad, desarrollando programas computacionales que sean correctos, eficaces y eficientes, utilizando las técnicas de programación más apropiadas; crear software (APIs) que puedan ser reutilizado por terceros o usar e integrar APIs desarrollados por otros en aplicaciones propias; y comprender, reconocer y aplicar diferentes estilos de programación, y tener un fundamento sólido sobre análisis y diseño de algoritmos y aplicaciones.
Descripción
El curso está organizado en cinco partes. La primera está dedicada al desarrollo de software desde una perspectiva de aplicación de procesos para asegurar la calidad. Se revisa el proceso en cascada (proceso tradicional) y se abarcan otros procesos comúnmente usados en la actualidad, como el proceso unificado, PSP y Scrum. La segunda parte se enfoca en describir el paradigma orientado a objetos, presentando desde un enfoque téorico-práctico el concepto de clase, objeto, abstracción y encapsulamiento. En esta parte se introduce la notación UML para el análisis y diseño de clases. La tercera parte del curso se enfoca en describir el tipo de dato abstracto (ADT) Collection (Arreglos, Listas, Tablas, Árboles), el cual es una de las bases para la creación de programas. En esta parte se presentan los temas de búsqueda y ordenamiento, haciendo principal énfasis en el análisis de la complejidad de los algoritmos usados a través de la notación O(Big O). Se presentan algoritmos de búsqueda y ordenamiento de complejidad O(logn) y O(nlogn) así como casos de estudio para la aplicación de estos algoritmos. En la cuarta parte se presentan temas de programación específicos para el lenguaje Java, abarcando temas como creación y uso de paquetes, programación multihilos, programación distribuida, programación con interfaces gráficas, programación Web y acceso a datos (archivos y bases de datos). La quinta parte del curso se enfoca en el tema de programación con el lenguaje Python, para desarrollar aplicaciones tanto orientadas a objetos como procedurales. Se describen las principales características de este lenguaje y se desarrollan casos de estudio para presentar al estudiante las ventajas que presenta Python para crear aplicaciones usualmente usadas en el ámbito académico y de investigación.
Contenido
1. Procesos de software
a. Algoritmo, desarrollo de software, y modelo en cascada
b. Calidad (procesos) y pruebas (estrategias y casos de estudio) de software
2. Paradigma orientado a objetos
a. Clases y objetos: abstracción y encapsulamiento de información
b. Análisis y diseño orientado a objetos: Introducir y usar notación UML
c. Herencia y polimorfismo: Clases genéricas, abstractas e interfaces
3. ADT Colección: búsqueda y ordenamiento
a. ADT Collection (Arreglos, Listas, Árboles, Tablas hash)
b. Introducción a la notación Big O y análisis de algoritmos
c. Problema y algoritmos de búsqueda: Análisis y notación "Big O"
d. Algoritmos de búsqueda con complejidad O(logn) y ADT usados
e. Problema y algoritmos de ordenamiento: Análisis y notación "Big O"
f. Algoritmos de ordenamiento con complejidad O(nlogn) y ADT usados
4. Programación con Java
a. Introducción a Java
i. Máquina virtual
ii. Paquetes
iii. Jerarquía de clases
iv. Ambiente de compilación y ejecución
b. Creación y uso de APIs en Java
c. Creación y uso de scripts
d. Programación procedural vs orientada a objetos
e. Programación multihilos: Implementación y problemas de sincronización
f. Programación con interfaces gráficas: Modelo MVC
g. Aplicaciones distribuidas: Objetos distribuidos con Remote Method Invocation y CORBA
h. Acceso a datos: archivos y bases de datos
i. Aplicaciones Web: enfoque de programación por capas
5. Programación Python
a. Introducción a Python
i. Orientado a objetos
ii. Procedural
iii. Funcional
iv. Ambiente de programación
b. Programación en Python
i. Tipos de datos
ii. Referencias
iii. Interface de Python con otros lenguajes de programación (Java, C++)
c. Uso de paquetes en Python
i. Análisis de datos, graficación, ingeniería, matemáticas, etc.
Bibliografía
· Ian Sommerville, Ingeniería de software. Pearson Educación, 2011.
· Ivar Jacobson, Grady Booch, James Rumbaugh, El proceso unificado de desarrollo de software. The Addison-Wesley Object Technology Series, 2004.
· Thomas T. Cormen, Charles E. Leiserson, Ronald L. Rivest, Introduction to Algorithms. MIT Press, 1990.
· Robert Sedgewick, Algorithms in Java. Pearson, 3rd Ed., 2004.
· Robert Lafore, Data Structures and Algorithms in Java, Sams Publishing, 2nd Ed., 2002.
· Joshua Bloch, Effective Java. Pearson Education, 2nd Ed., 2008.
· Bruce Eckel, Thinking in Java. Pearson, 3rd Ed., 2003.
· David M. Beazley, Python Essential Reference. Addison-Wesley Professional, 4th Ed., 2009.
· Allen B. Downey, Think Python. O'Reilly Media, 2012.
ITC-104: Introducción a la Optimización
Objetivo
Al finalizar el curso el alumno conocerá el problema de optimización, distinguiendo claramente sus tipos, componentes y dificultades. Sabrá diseñar y aplicar estrategias algorítmicas generales, que le permitan evaluar la dificultad del problema.
Descripción
La optimización es un problema recurrente en diversas áreas de la ciencia, ingeniería, economía, etc. En este curso se comienza estudiando la naturaleza del problema, que deriva en la clasificación de sus planteamientos más generales. Se conocerán sus componentes principales y se definirán las características que pueden afectar la respuesta de un algoritmo. Dada su clasificación general y sus componentes intrínsecos, es posible analizar las estrategias actuales para su resolución, particularmente en los principales componentes algoritmos que son comunes a todas las clases. Un ejemplo que se estudiará a fondo es la programación lineal, cuyas características geométricas contribuyen a formar una idea clara de la naturaleza del problema y de la estrategia de solución; tales características geométricas también ponen en evidencia las propiedades que lo relacionan con una variedad de otros problemas. Para finalizar, presentaremos una colección de características que representan una potencial fuente de dificultad para la eficiencia de los algoritmos, o incluso para su factibilidad.
Contenido
1. Fundamentos
a. ¿Qué es optimización?
b. Tipos de problemas de optimización
i. Optimización combinatoria
ii. Optimización numérica
iii. Optimización entera y mixta
c. Clases de algoritmos
d. Función objetivo
e. Espacio de búsqueda
2. Óptimos
a. Mínimos y máximos
b. Óptimos locales y óptimo global
c. Multimodalidad
d. Múltiples objetivos
e. Manejo de restricciones
3. Estructura de un optimizador
a. El problema y su representación
b. Dirección de descenso (gradiente)
c. Iteraciones y evaluaciones
d. Criterio de paro
e. Minimización sin pérdida de generalidad
4. Programación lineal
a. Planteamiento del problema
b. Representación y proyección de poliedros
c. Dualidad
d. Algoritmo simplex
e. Flujo máximo en digrafos
5. Dificultades en optimización
a. Dificultad del problema
b. Convergencia insatisfactoria
c. Rugosidad
d. Decepción
e. Neutralidad y redundancia
f. Epístasis, pleiotropía y separabilidad
g. Ruido y robustez
h. Sobreajuste y simplificación
i. Dimensionalidad en las funciones objetivo
j. Dimensionalidad en las variables de decisión
k. Ambientes con cambios dinámicos
Bibliografía
· Marco Locatelli, Global Optimization: Theory, Algorithms and Applications. ESIAM Society for Industrial and Applied Mathematics, 2013.
· R. Horst, Panos Pardalos, Nguyen van Thoai, Introduction to Global Optimization. Springer, 2nd Ed.,, 2000.
· Rangarajan Sundaram, A First Course in Optimization Theory. Cambridge University Press, 2014.
· Jorge Nocedal, Stephen Wright, Numerical Optimization. Springer, 2nd Ed., 2006.
· R. Fletcher, Practical Methods of Optimization. Wiley, 2nd Ed., 2000.
ITC-105: Introducción a las Tecnologías de Información y Comunicaciones
Objetivo
Que el estudiante conozca y experimente los elementos que conforman las tecnologías de información y comunicaciones que dan soporte a la solución de problemas de gestión de información.
Descripción
En este curso se ofrece un panorama de los mecanismos, técnicas y estrategias que hacen posible la transferencia, almacenamiento, clasificación y análisis de información para convertirla en un activo útil. Dado que el acceso a la información se realiza a través de dispositivos conectados a redes fijas o inalámbricas, en este curso se estudian técnicas y protocolos de comunicación que interconectan las fuentes de información.
Contenido
1. Introducción a redes de comunicaciones
a. Protocolo de Internet (IP)
b. Modelo cliente-servidor
c. Descripción general de modelos de referencia TCP/IP y OSI
d. Principales estándares y protocolos
2. Interconexión de fuentes de información
a. Principales aplicaciones en Internet
b. Direccionamiento en Internet
c. Enrutamiento en Internet
d. Calidad de servicio en Internet
3. Tecnologías de acceso a Internet
a. Infraestructura de soporte a Internet móvil
b. Redes de comunicaciones cableadas
c. Convergencia redes inalámbricas y fijas
d. Dispositivos móviles inteligentes
4. Recolección y almacenamiento de información
a. Repaso de tecnologías de almacenes de datos
b. Almacenamiento de datos sobre redes P2P
c. Gestión de datos en la Web
d. Almacenamiento de datos en la nube
5. Clasificación y análisis de información
a. Contexto del análisis de datos
b. Predicción y clasificación
c. Agrupación y asociación
d. Aplicaciones
6. Aplicaciones de las TICs en la gestión de información
a. Relación de las TICs y la gestión de información
b. Usos prácticos
Bibliografía
· Jim Kurose, Keith Ross, Computer Networking: A Top Down Approach Featuring the Internet. Addison-Wesley, 6th Ed., 2012.
· S. Tanenbaum, Computer Networks, 5th Ed., Prentice Hall, 2010.
ITC-106: Fundamentos de Ingeniería Computacional
Objetivo
Proporcionar al estudiante los conceptos y fundamentos de la Ingeniería Computacional como área de estudio, así como las herramientas y el fundamento matemático para abordar problemas de Ingeniería desde una perspectiva Computacional.
Descripción
EEn el curso se abordan los principales fundamentos de la ingeniería computacional, tanto desde el punto de vista hardware como software.
En una primera parte de introducción, se presenta el área de estudio y metodologías de diseño adecuadas para resolver problemas que no tienen una única solución, partiendo de un conjunto de especificaciones y ajustándose a un conjunto de restricciones. En una segunda parte, se abordan temas selectos con una base matemática sólida en áreas como Teoría de Números, el Procesamiento de Señales, Álgebra lineal y Control, con aplicaciones en diversos temas de la Ingeniería Computacional.
Contenido
1. Introducción a la Ingeniería Computacional
a. Sistemas de cómputo: diseño e implementación
b. Ingeniería de sistemas: Hardware, Software, Hardware – Software.
c. Casos de estudio
2. Teoría de números y sus aplicaciones
a. Algebra abstracta
b. Grupos y campos finitos
c. Grupos multiplicativos y aditivos
3. Ejemplos de aplicaciones y laboratorios
4. Señales y Sistemas
a. Señales continuas y discretas
b. Sistemas continuos y discretos
c. Respuesta finita al impulso
d. Respuesta infinita al impulso
e. Respuesta en frecuencia
5. Teoría de Control Moderno
a. Sistemas y Función de transferencia
b. Retroalimentación
c. Transformada de Laplace
d. Respuesta transitoria de sistemas
b. Parámetros de comportamiento
f. Acciones básicas de control
g. Método del lugar de raíces
h. Transformada Z
6. Análisis de Fourier
a. Series de Fourier
b. Integral de Fourier
c. Transformada de Fourier Discreta
d. Algoritmos FFT
e. Funciones de ventana
f. Teorema de convolución
g. Aplicaciones: diseño de filtros
Bibliografía
ITC-201: Análisis de Datos
Objetivo
Conocer de manera general las técnicas de Reconocimiento de Patrones y enfoques del proceso general de Minería de Datos. Se describen los fundamentos y conceptos necesarios de cada una de las etapas del proceso. Se explora el uso de fuentes de datos para análisis y toma de decisiones resultantes de tareas de clasificación, predicción, agrupamiento y asociación.
Descripción
En el curso se abordan temas relacionados con el reconocimiento de patrones, aprendizaje máquina y minería de datos para el análisis de datos mediante técnicas supervisadas y no supervisadas. Primeramente se exponen diferentes técnicas de preprocesamiento y preparación de datos, de modo que los datos son "limpiados" y se les da un formato adecuado para su análisis. Posteriormente se presentan diversas técnicas no supervisadas para el agrupamiento y asociación de datos no etiquetados. Finalmente se estudian las técnicas de clasificación supervisada más utilizadas en la práctica y los métodos para evaluar diferentes enfoques.
Contenido
1. Introducción al análisis de datos
a. Objetivos del análisis de datos
b. Conceptos básicos
c. Funciones de similitud
d. Tareas en el análisis de datos
e. Técnicas generales (predicción, clasificación, agrupación y asociación).
f. Aplicaciones
2. Preprocesamiento y preparación de datos
a. Operaciones sobre datos
b. Problemas en el manejo de datos reales
c. Selección de variables
d. Selección de instancias
e. Reducción de dimensionalidad
f. Selección de fuentes de datos
g. Calidad de datos
3. Agrupación y asociación
a. Conceptos fundamentales de agrupación
b. Tipos de agrupación
c. Principales técnicas de agrupación
d. Análisis estadístico
e. Análisis exploratorio
f. Reglas de asociación
g. Patrones secuenciales
h. Análisis semántico latente
i. K-means y K-means online
j. Algoritmo de Esperanza Maximización
k. Cobweb
l. Autoclass
m. Redes de Kohonen
4. Clasificación y predicción
a. Clasificadores Bayesianos
b. Clasificador K‐NN
c. Algoritmo perceptrón y regresión logística
d. Métodos de mínimos cuadrados
e. Método del kernel
f. Análisis lineal discriminante
g. Máquina de soporte vectorial
h. Algoritmo AdaBoost
i. Árboles de decisión
j. Redes neuronales artificiales
5. Evaluación de modelos
a. Métodos de remuestreo
b. Métricas de evaluación
c. Análisis estadístico
Bibliografía
· Tom M. Mitchell, Machine Learning. Prentice Hall, 2003.
· Jiawei Han, Micheline Kamber, Data Mining: Concepts and Techniques. Morgan Kaufmann, 2nd Ed., 2006.
· I.H. Witten, E. Frank, Data Mining: Practical Machine Learning Tools and Techniques. Morgan Kaufmann, 1999.
· Pang-Ning Tan, Michael Steinbach, Vipin Kumar. Introduction to Data Mining. Addison- Wesley, 2006.
· Anil K. Jain, Richard C. Dubes, Algorithms for Clustering Data. Prentice Hall, 1988.
· T. Hastie, R. Tibshirani, J. Friedman, Elements of Statistical Learning: Data Mining, Inference and Prediction. Springer-Verlag, 2001
· S. Theodoridis, K. Koutroumbas, Pattern Recognition. Academic Press, 4th Ed., 2009.
· S. Theodoridis, A. Pikrakis, K. Koutroumbas, D. Cavouras, Introduction to Pattern Recognition. A MATLAB Approach. Academic Press, 2010.
· K. L. Priddy, P. E. Keller, Artificial Neural Networks: An Introduction. The International Society for Optical Engineering, 2005.
ITC-202: Cómputo Móvil
Objetivo
El objetivo principal de este curso es el de proporcionar un marco general de los fundamentos, métodos y tecnologías para la compresión de problemáticas y el desarrollo de aplicaciones en el área de computación móvil.
Descripción
La necesidad de información en cualquier momento y lugar, conjuntamente con el surgimiento de dispositivos de cómputo portátiles y los avances en las tecnologías de comunicación inalámbrica e Internet, han hecho a la Computación Móvil una realidad. En términos generales, ésta tiene como finalidad el tratamiento automático de información por medio de dispositivos computacionales con capacidad de movilidad y con acceso digital a fuentes de información vía una infraestructura de comunicación inalámbrica. Los ambientes de cómputo móvil se caracterizan por restricciones importantes de recursos y cambios frecuentes en las condiciones de operación lo cual impone desafíos que involucran diversas áreas de las ciencias computacionales, ingenierías computacional, eléctrica y de telecomunicaciones. Adicionalmente a la formación teórica, el curso tendrá una fuerte orientación practica al desarrollo de aplicaciones en dispositivos móviles, particularmente en teléfonos inteligentes con soporte para Android.
Contenido
1. Introducción y motivación
a. Evolución y tendencia tecnológica
b. Anatomía de un dispositivo móvil
c. Revisión de dispositivos móviles
d. Desafíos de la computación móvil
e. Aplicaciones de la computación móvil
2. Fundamentos de cómputo móvil
a. Definiciones
b. Condiciones de movilidad
c. Dimensiones de movilidad
i. Conciencia de ubicación
ii. Calidad de servicio de conectividad
iii. Capacidades computacionales limitadas
iv. Restricciones de energía
v. Interfaces multimodales
vi. Proliferación de plataformas
vii. Transacciones activas
3. Comunicaciones móviles
a. Fundamentos de transmisión inalámbrica
b. Propagación de señal
c. Capacidad de canal
d. Ancho de banda
e. Asignación de ancho de banda
i. Multiplexado: SDMA, FDMA, TDMA, CDMA
f. Técnicas de transmisión
i. De corto alcance
ii. Celulares
iii. Satelitales
iv. Estándares de comunicación y redes inalámbricas
4. Tecnologías y plataformas móviles
a. Introducción
b. Sistemas en un chip
c. Máquinas de cómputo móviles
i. Procesador de aplicaciones
ii. Procesadores dedicados y aceleradores
iii. Multiprocesadores
iv. Procesamiento simétrico y asimétrico
v. Subsistemas especializados
vi. Sistemas operativos móviles
5. Desarrollo de aplicaciones
a. Infraestructura y niveles de abstracción
b. Ambientes y herramientas de desarrollo
c. Organización por capas del software
i. Software de aplicación
ii. Middleware
iii. Software de bajo nivel
d. Concepción de aplicaciones e integración
i. Consideraciones de desempeño
ii. Diseño de interfaces de usuario
iii. Modelo de datos y memoria
iv. Comunicaciones y acceso de entrada/salida
v. Aspectos de energía
e. Programación basada en eventos
f. Modelo vista controlador
g. Aplicaciones nativas y WEB
6. Localización
a. Ubicación y movilidad
b. Adquisición de ubicación
i. Triangulación
ii. Métodos basados en proximidad
iii. Análisis visual de una escena
c. Técnicas de adquisición
i. Basadas en GPS
ii. Basadas en redes inalámbricas y celulares
iii. Híbridas
d. Sistema de posicionamiento global (GPS)
e. Sistemas de información geográfica
7. Introducción a Android
a. Organización y Arquitectura de Android
b. Máquina Virtual Dalvik
c. Descripción de componentes principales
i. SO y middleware
ii. Apps y SDK.
d. Componentes de una aplicación
i. Activities
ii. Services
iii. Broadcast Receivers
iv. Content Providers
e. Interacción entre aplicaciones: intentos
f. Acceso a información de sensores: pantalla táctil, sensores inerciales
Bibliografía
· Reza B’Far, Mobile Computing Principles. Cambridge University Press, 2005.
· Tommi Mikkonen, Programming Mobile Devices. John Wiley and Sons, 2007.
· K. Pahlavan, Allen H. Levesque, Wireless Information Networks, Wiley-Interscience, 2nd Ed., 2005.
· Greg Nudelman, Android design patterns: Interaction design solutions for developers, Wiley, 1st Ed., 2013.
· Karim Yaghmour, Embedded Android: Porting, Extending, and Customizing. O'Reilly Media, 1st, 2013
· Greg Milette, Adam Stroud, Professional Android Sensors Programming. Wrox, 1st Ed., 2012.
· Erik Hellman, Android Programming: Pushing the limits. Wiler, 1st Ed., 2013.
· IEEE Computer Magazine.
· IEEE Transactions on Mobile Computing.
ITC-203: Cómputo Paralelo
Objetivo
El propósito de este curso es discutir técnicas y aplicaciones de la computación paralela y de las formas en que se construyen aplicaciones para este paradigma. En este curso nos concentraremos en el uso de varios núcleos de procesamiento que se coordinan o comunican entre sí para resolver un problema en común. La coordinación se da ya sea a través de una memoria compartida o mediante el envío de mensajes.
Descripción
La construcción de aplicaciones para cómputo paralelo involucra muchos aspectos que no se presenta en la construcción de aplicaciones convencionales (secuenciales). El diseño de una aplicación paralela tiene que considerar entre otras cosas, el tipo de arquitectura sobre la cual se va a ejecutar, 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 este curso nos enfocaremos al uso de pthreads, OpenMP, Cuda y MPI, dado su alta disponibilidad para computadoras diferentes y su aceptación en la comunidad académica.
Contenido
1. Computación Paralela
a. ¿Por qué computación paralela?
b. Tipos de computadoras paralelas
c. Fundamentos del diseño de computadoras paralelas
2. Programas paralelos
a. Aplicaciones como casos de estudio
b. El proceso de paralelización
c. Un caso de estudio
d. Programación paralela para mejorar el rendimiento
e. Descomposición
f. Mapeo
g. Calendarización
h. Evaluación del rendimiento
i. Medidas de eficiencia
3. Programación con memoria compartida
a. Procesos
b. Sincronización y coordinación de procesos
c. Programación Multithreading con pthreads
d. Programación Multithreading con OpenMP
4. Programación para GPUs
a. Arquitectura de los GPUs
b. Cuda
c. Casos de estudio
d. Estrategias generales de programación paralela
e. Particionamiento
f. Divide y vencerás
g. Aplicaciones tipo pipeline
h. Aplicaciones de tipo síncrono
i. Balance de carga
5. Algoritmos y aplicaciones
a. Algoritmos de ordenamiento
b. Algoritmos numéricos
c. Algoritmos para procesamiento de imágenes
d. Algoritmos de búsqueda y optimización
6. Programación paralela mediante intercambio de mensajes
a. Principios básicos
b. Message Passing Interface
Bibliografía
· D. Culler, J. Singh, A. Gupta, Parallel Computer Architecture: A Hardware/Software Approach. Morgan Kauffman Publishers, 1998.
· I. T. Foster, Designing and Building Parallel Programs. Addisson-Wesley, 1995.
· Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta. An Introduction to Parallel Computing: Design and Analysis of Algorithms. Addisson-Wesley, 2nd Ed., 2003.
· Pater Pacheco, An Introduction to Parallel Programming. Morgan Kaufmann, 2011.
· M. J. Quinn, Parallel Programming in C with MPI and OpenMP. McGraw-Hill, 2003.
· B. Wilkinson, M. Allen, Parallel Programming: Techniques and Aplications Using Networked Workstations and Parallel Computers. Prentice-Hall, 2nd Ed., 2004.
· N. Wilt, The CUDA Handbook: A Comprehensive Guide to GPU Programming. Addison-Wesley Professional, 2013.
· M. Herlihy, The Art of Multiprocessor Programming. Morgan Kaufman, 2012.
· B. Chapman, Using OpenMP: Portable Shared Memory Parallel Programming. The MIT Press, 2007.
ITC-204: Sistemas Distribuidos
Objetivo
Dotar al alumno de conocimientos para que pueda comprender y aplicar los conceptos fundamentales de los sistemas distribuidos, tanto para el área de base de datos, como para las aplicaciones en red, como manejo de protocolos, sistemas operativos, bajo diferentes tipos de arquitecturas (cliente/servidor, P2P). Que el alumno pueda programar aplicaciones en sistemas distribuidos a gran escala como la Web. Que el alumno comprenda las tecnologías middleware como Sockets, RPCs, RMIs, Corba y Servicios Web
Descripción
La materia contribuye a la conformación de habilidades técnicas de alto nivel en el área de sistemas distribuidos. Específicamente el curso coadyuva a reforzar los conceptos en el área de sistemas distribuidos y distinga los aspectos más importantes de este tipo de sistemas; conocer las principales tecnologías de programación para sistemas distribuidos; diseñar e implementar sistemas distribuidos utilizando herramientas de programación de ultima generación; y conocer las principales tecnologías para el diseño de sistemas distribuidos.
Contenido
1. Introducción a los sistemas distribuidos
a. Tipos de sistemas distribuidos
b. Modelos de sistemas
c. Retos para los sistemas distribuidos
d. Ejemplos de sistemas distribuidos
2. Comunicación entre procesos
a. Uso de Threads
b. Comunicación con Sockets
3. Middlewares
a. Introducción
b. RPC
c. CORBA
d. Servicios Web
4. Sincronización
a. Sincronización por reloj
b. Exclusión mutua
c. Elección de líder
5. Datos compartidos
a. Control de concurrencia y transacciones
b. Replicación de datos y Consistencia
c. Sistemas de archivos distribuidos
6. Tolerancia a Fallos
a. Introducción
b. Recuperación
c. Comunicación confiable
7. Seguridad
a. Introducción
b. Control de acceso, autenticación
c. Comunicaciones seguras
8. Arquitecturas de sistemas distribuidos
a. Arquitectura Cliente/Servidor
b. Sistemas P2P
c. Arquitecturas de aplicaciones Web
Bibliografía
· George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair, Distributed Systems: Concepts and Design. Addison Wesley, 5th Ed., 2011
· Andrew S. Tanenbaum, Maarten van Oteen, Distributed Systems: Principles and Paradigms. Prentice-Hall, 2nd Ed., 2006.
· Vijay K. Garg, Concurrent and Distributed Computing in Java. Wiley-IEEE Press, 2004.
· Ian J. Taylor, Andrew Harrison, From P2P to Web Services and Grids: Peers in a Client/Server World. Springer; 1st Ed., 2004.
· Sukumar Ghos, Distributed Systems: An Algorithmic Approach. Chapman & Hall/CRC, 2007.
· Marko Boger, Java in Distributed Systems: Concurrency, Distribution and Persistence. John Wiley & Sons, 1st Ed., 2001.
· Andrew S. Tanenbaum, Distributed Operating Systems. Prentice-Hall, 1994.
ITC-205: Análisis y Diseño de Algoritmos
Objetivo
Proporcionar al alumno las herramientas para realizar un análisis teórico, independiente de la programación, de los algoritmos, así como para llevar a cabo un diseño eficiente de los mismos con un enfoque en aspectos importantes del problema
Descripción
El diseño eficiente de algoritmos es fundamental en el mundo de la Computación. Después de iniciar con las conjeturas de qué es un buen algoritmo, el curso trata con los problemas de gráficas y estructuras de datos alcanzando el campo de Optimización Combinatoria. En el curso se tratan problemas de combinatoria y algoritmos probabilísticos. También se analizan algoritmos de tipo numérico, de las áreas de álgebra lineal y criptografía entre otras, con aplicaciones a computación en paralelo.
Contenido
1. Crecimiento de las funciones
a. Crecimiento exponencial y polinomial
b. Notación asintótica
2. Algoritmos numéricos.
a. Aritmética básica
b. Aritmética modular
c. Pruebas de primalidad
d. Criptografía
e. Funciones de dispersión
3. Algoritmos divide-y-vencerás
a. Multiplicación
b. Relaciones de recurrencia
c. Mergesort y otros métodos de ordenamiento
d. Multiplicación de matrices
4. Estructuras de datos
a. Pilas, colas y listas
b. Árboles binarios
c. Otros árboles de búsqueda
d. Estructuras para conjuntos disjuntos
5. Algoritmos con grafos: descomposición
a. Búsqueda de primero en profundidad
b. Búsqueda en grafos dirigidos
c. Ordenamiento topológico
d. Componentes fuertemente conexos
6. Algoritmos con grafos: caminos
a. Búsqueda de primero en amplitud
b. Caminos más cortos: aristas con longitudes
c. El algoritmo de Dijkstra
d. Caminos más cortos: aristas con longitudes negativas
e. Caminos más cortos: grafos dirigidos acíclicos
7. Algoritmos voraces
a. Árboles recubridores mínimos
b. Codificación de Huffman
c. Cobertura de conjuntos
8. Programación dinámica
a. Caminos más cortos en grafos dirigidos acíclicos
b. Subsecuencias crecientes más largas
c. El problema de la mochila
d. Conjuntos independientes en árboles
9. Programación lineal
a. Planteamiento de la programación lineal
b. Dualidad
c. El algoritmo simplex
10. Problemas NP completos
a. Problemas de búsqueda
b. Clasificación P-NP
c. Reducciones
d. Algoritmos de aproximación
Bibliografía
· Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, Introduction to Algorithms. The MIT Press and McGraw-Hill, 3rd Ed., 2009.
· S. Dasgupta, C. H. Papadimitriou, U. V. Vazirani, Algorithms. McGrow Hill, 2006.
· Anany V. Levitin, Introduction to the Design and Analysis of Algorithms. Addison Wesley, 3rd Ed., 2011.
· Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman, The Design and Analysis of Computer Algorithms. Addison-Wesley, 1974.
ITC-206: Inteligencia Computacional
Objetivo
Presentar al alumno una visión general de los grandes paradigmas que conforman la inteligencia computacional. Asimismo, proporcionar los conocimientos teórico-prácticos necesarios para utilizar y desarrollar técnicas de inteligencia computacional, como herramientas para optimización, entre otros propósitos.
Descripción
En este curso se estudiarán los diversos paradigmas que componen la inteligencia computacional, tanto principios de diseño, objetivos, así como implementación y experimentación. Los paradigmas estudiados serán: computación evolutiva, inteligencia de enjambre, sistemas inmunes artificiales y sistemas neuro-difusos.
Contenido
1. Introducción a la inteligencia computacional
2. Introducción al aprendizaje máquina
a. Conceptos básicos de búsqueda y aprendizaje máquina
3. Introducción a la computación evolutiva
a. Visión general de algoritmos genéticos, programación evolutiva y estrategias evolutivas
b. Evolución diferencial
c. Algoritmos culturales
d. Coevolución
4. Inteligencia colectiva
a. Visión general de la inteligencia colectiva
b. Optimización mediante cúmulos de partículas
i. Algoritmo básico
ii. Topologías de interconexión
iii. Variantes básicas
iv. Parámetros principales
v. Tópicos avanzados
c. Algoritmos de hormigas
i. Introducción
ii. Modelos principales
5. Sistemas inmunes artificiales
a. Visión general del sistema inmune natural
b. Modelos principales
6. Sistemas neuro-difusos
a. Visión general de las redes neuronales
b. Fundamentos, modelos y aplicaciones de redes neuronales
c. Aprendizaje supervisado en redes neuronales
d. Aprendizaje no supervisado en redes neuronales
e. Redes de funciones de base radial.
f. Conjuntos difusos
g. Lógica difusa
h. Control difuso
i. Conjuntos rugosos
Bibliografía
· Andries P. Engelbrecht, Computational Intelligence: An Introduction. John Wiley and Sons, 2nd Ed., 2007.
· Russell Eberhart, Yuhui Shi, Computational Intelligence: Concepts to Implementations. Morgan Haufmann, 2007.
· S. Sumath, Surekha Paneerselvan, Computational Intelligence Paradigms: theory and applications using Matlab. CRC Press, 2010.
· Lezsek Rutkowki, Computational Intelligence: Methods and Techniques. Springer, 2010.
· Simon Haykin, Neural Networks and Learning Machines. Prentice Hall, 3rd Ed., 2008.
· Agoston E. Eiben, J. E. Smith, Introduction to Evolutionary Computing. Springer, 2007.
ITC-207: Optimización Combinatoria
Objetivo
El objetivo de este curso es que el estudiante conozca y aplique a problemas teóricos y del mundo real el paradigma de solución basado en la optimización combinatoria.
Descripción
El paradigma de solución de la optimización combinatoria descansa en fundamentos teóricos para modelar y representar problemas, y en algoritmos de búsqueda local para resolver dichos problemas. El fundamento teórico de la optimización combinatoria se apoya en la teoría de la complejidad computacional y en el uso de objetos matemáticos para representar problemas de optimización combinatoria. Los objetos matemáticos que serán presentados incluyen; grafos, árboles, permutaciones, particiones, cadenas de crecimiento restringido, polinomios diagonales, polinomios caja, polinomios “mayor que”. Es altamente relevante el énfasis que se hace sobre la representación, generación, y enumeración. Los algoritmos de búsqueda local usan la modelización/representación basada en objetos matemáticos para resolver instancias de problemas teóricos y prácticos. Los algoritmos de búsqueda local que serán tratados en detalle incluyen: a) algoritmos de mutación/selección; b) algoritmo de recocido simulado; c) algoritmos genéticos; d) búsqueda tabú; y e) algoritmo de colonia de hormigas. Al final del curso se espera que el estudiante tenga los conocimientos y habilidades necesarias para modelar problemas de la vida real usando al menos los objetos matemáticos vistos en el curso, y resolver dichos problemas usando algoritmos de optimización combinatoria básicos o mezclas de ellos.
Contenido
1. Teoría de complejidad computacional
a. Teoría de NP-Completez
b. Definición de las clases de complejidad computacional
c. Procedimiento para la demostración de la NP-Completez
2. Representación y Generación (RG) de objetos matemáticos
a. RG de grafos
b. RG de árboles
c. RG de permutaciones
d. RG de particiones
e. RG de cadenas de crecimiento restringido
f. RG de polinomios diagonales, polinomios caja, y polinomios “mayor que”
3. Algoritmos de Mutación y Selección
a. Introducción a los Algoritmos de mutación y selección
b. Algoritmo de 1 padre – 1 hijo
c. Algoritmo de 1 padre – m hijos
d. Algoritmo de n padres – m hijos selección uniforme
e. Algoritmo de n padres – m hijos selección proporcional
f. Sintonización de parámetros
4. Algoritmo de Recocido simulado
a. Algoritmos de aceptación por umbral
b. La analogía física
c. Modelos Markovianos
d. Un modelo homogéneo
e. Un modelo no-homogéneo
f. Comportamiento asintótico
g. Calendarización de enfriamiento
h. Sintonización de parámetros
5. Algoritmos Genéticos
a. Algoritmos evolutivos
b. Bases teóricas de los algoritmos genéticos
c. Genética de poblaciones
d. Selección artificial
e. Selección natural
f. Recombinación de genes
g. Sintonización de parámetros
6. Búsqueda Tabú
a. Inspiración del algoritmo de búsqueda tabú
b. Métodos de solución con un enfoque iterativo
c. Uso eficiente de la memoria
d. Listas tabú de tamaño variable
e. El criterio de aspiración
f. Ajuste de la diversificación
g. Sintonización de parámetros
7. Algoritmo de Colonia de Hormigas (ACH)
a. Teoría de la optimización basada en colonia de hormigas
b. Representación ad-hoc para ACH
c. Problemas de enrutamiento
d. Problemas de calendarización
8. Aplicación a problemas reales
a. Modelización de problemas reales
b. Análisis de la representación y espacio de búsqueda
c. Funciones de vecindad
d. Sintonización de parámetros
Bibliografía
· E. Aarts, J. Karel, Local Search in Combinatorial optimization. Princeton University Press, 2003.
· M. Dorigo, T. Stützle, Ant Colony Optimization. Prentice-Hall, 2004.
· D. L. Kreher, D. R. Stinson, Combinatorial Algorithms Generation, Enumeration, and Search. CRC Press, 1998.
· F. Glover, M. Laguna, Tabu Search. Kluwer Academic Publishers, 1997.
· D. Goldberg, The Design of Innovation (Genetic Algorithms and Evolutionary Computation). Springer 2002.
ITC-208: Ciencia de Datos
Objetivo
Que el estudiante conozca diversas técnicas y tecnologías utilizadas para el almacenamiento, procesamiento, análisis y visualización de grandes volúmenes de datos.
Descripción
El curso introduce al estudiante los aspectos teóricos y prácticos sobre técnicas y tecnologías para obtener información valiosa a partir de grandes volúmenes de datos, partiendo desde el proceso de adquisición y almacenamiento de los mismos, hasta su procesamiento, análisis y visualización.
Contenido
1. Introducción a la ciencia de datos
a. ¿Qué es la ciencia de datos?
b. Aplicaciones
c. Relación con otras áreas
2. Almacenamiento y manipulación de datos a gran escala
a. Bases de datos relacionales,
b. Almacenes de datos
c. Bases de datos paralelas
d. Bases de datos NoSQL
e. Big Data
3. Análisis de datos
a. Conceptos básicos de modelado, representación y aprovechamiento de datos
b. Aprendizaje no supervisado
c. Aprendizaje supervisado
d. Diseño de experimentos
e. Revisión de algoritmos de aprendizaje automático (machine learning)
f. Caso de uso con Python y Lenguaje R
4. Presentación de resultados
a. Evaluación de resultados
b. Análisis de resultados
c. Visualización de datos
5. Casos de uso con diferentes tipos de datos
a. Recuperación de información
b. Análisis de estructuras de grafos
c. Razonamiento
d. Detección de fraudes
e. Redes sociales
f. Minería Web
Bibliografía
· Cathy O'Neil, Rachel Schutt, Doing Data Science: Straight Talk from the Frontline. O'Reilly Media, 1st Ed., 2013.
· Russell Jurney, Agile Data Science: Building Data Analytics Applications with Hadoop. O'Reilly Media, 1st Ed., 2013.
· Nina Zumel, John Mount, Practical Data Science with R. Manning Publications, 1st Ed., 2014.
· Wes McKinney, Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython. O'Reilly Media, 1st Ed., 2012.
· Anand Rajaraman, Jeffrey D. Ullman, Mining of Massive Datasets. Cambridge University Press, 2011.
· Manoj R Patil, Feris Thia, Pentaho for Big Data Analytics. Packt Publishing, 2013.
· Tom White, Hadoop: The Definitive Guide. Yahoo Press, 3rd Ed., 2012.
ITC-209: Redes de Computadoras
Objetivo
Que el estudiante conozca y experimente la estructura y organización de diversas redes de computadoras y sus protocolos de comunicación.
Descripción
En este curso se estudia la estructura y organización de las redes de computadoras tomando en cuenta la división de las capas que integran la pila de protocolos y las relaciones que existen entre ellas. Se estudian diversos protocolos de aplicación, transporte, red y enlace desde un punto de vista analítico y práctico. Se realizan simulaciones mediante software especializado con el fin de aplicar los conocimientos adquiridos en el curso.
Contenido
1. Introducción a redes de computadoras.
a. Modelo cliente-servidor
b. Descripción general de modelos de referencia TCP/IP y OSI
2. Capa de aplicación
a. Requerimientos de servicios
b. Protocolos de aplicación básicos: http, http, smtp, DNS, etc.
3. Capa de transporte
a. Modelos de servicio
b. Conceptos de multiplexación y de-multiplexación
c. Protocolos no orientados a conexión
d. Protocolos orientados a conexión
e. Mecanismos de control de conexión y variantes de TCP
4. Capa de Red
a. Descripción de la capa IP (Internet Protocol)
b. Esquemas de direccionamiento de la capa de red
c. Algoritmos de enrutamiento
d. Enrutamiento en Internet
5. Conceptos de Capa de Enlace
a. Esquemas de direccionamiento de la capa de enlace
b. Servicios de la capa de enlace
c. Redes de Área Local
Bibliografía
· Jim Kurose, Keith Ross, Computer Networking: A Top Down Approach Featuring the Internet. Addison-Wesley, 6th Ed., 2'12.
· S. Tanenbaum, Computer Networks. Prentice Hall, 5th Ed., 2010.
· W. Stallings, Comunicaciones y Redes de Computadores. Prentice Hall, 7th Ed., 2008.
· A. Lopez, Protocolos de Internet. Diseño e implementación en sistemas UNIX. Ra-ma, 1999.
· W. Stevens, TCP/IP Illustrated: The protocols, Volume 1. Addison-Wesley, 1994.
· W. Stevens, TCP/IP Illustrated: The implementation, Volume 2. Addison-Wesley, 1995.
· W. Stevens, TCP/IP Illustrated: The implementation, Volume 3. Addison-Wesley, 2001
· D. E. Comer, Internetworking with TCP/IP, Volume 1. Addison-Wesley, 6th Ed., 2013.
ITC-210: Codificación y compresión de datos
Objetivo
Presentar los fundamentos de la compresión de datos y de la codificación de los mismos para su protección contra errores durante la transmisión en redes de información.
Descripción
En el curso se presentan diversas técnicas de compresión, con y sin pérdidas, dirigidas a comprimir texto plano y señales multimedia. Se analizan los conceptos de entropía, cantidad de información, información mutua y canales de información. Los esquemas de codificación para la detección y la corrección de errores son discutidos. Los parámetros fundamentales que describen a un código corrector son definidos e interpretados dentro del marco de la transmisión digital de la información. Finalmente, se exploran esquemas de inserción de datos en señales multimedia y la protección de los mismos utilizando códigos correctores de errores.
Contenido
1. Introducción a la Teoría de la Información
a. Reseña histórica y objetivos de la Teoría de la Información
b. Fuentes de información
2. Entropía y cantidad de información
a. Medida de información: entropía de Shannon
b. Entropía condicional, entropía conjunta
c. Información mutua
3. Compresión entrópica de datos
a. Teorema de codificación de fuentes de Shannon
b. Códigos decodificables de forma única. Desigualdad de Kraft-McMillan
c. Teorema de codificación de símbolos
d. Códigos óptimos
4. Compresión con pérdidas
a. Procesamiento digital de señales para compresión con pérdidas
b. Compresión de señales de audio
c. Compresión de imágenes digitales
d. Compresión de videos
e. Estándares de compresión
5. Capacidad de canal y segundo teorema de Shannon
a. Definición de capacidad de un canal
b. Teorema de codificación de fuentes con ruido (segundo teorema de Shannon)
c. Códigos detectores y correctores de errores
d. Códigos de detección de errores
e. Códigos de corrección de errores
f. Códigos sistemáticos
g. Códigos no binarios
6. Marcas de agua digitales
a. Comunicaciones secretas, medios digitales como canales subliminales
b. Espectro disperso
c. Comunicación con información lateral
d. Teoría de la Información en la esteganografía
e. Problemas abiertos
7. Casos de estudio
a. Corrección de errores de datos esteganográficos en presencia de ataques intencionales y no intencionales
Bibliografía
· Fazlollah Reza, An Introduction to Information Theory. Dover, 1961.
· Claude E. Shannon, The Mathematical Theory of Commmunication. University of Illinois Press, 1998.
· Richard E. Blahut, Algebraic Codes for Data Transmision. Cambridge University Press, 2002.
· Cox, M. Miller, J.Bloom, J. Fridrich, Digital Watermarking. Morgan Kaufmann, 2nd Ed., 2007.
· M. Barni, F. Bartolini, Watermarking Systems Engineering: Enabling Digital Assets Security and Other Applications. Marcel Dekker, 2007.
ITC-211: Diseño de Sistemas Digitales
Objetivo
Desarrollar abstracciones para formular y resolver problemas de ingeniería mediante el diseño, modelado y gestión de sistemas digitales complejos. Aplicar metodologías, técnicas y herramientas apropiadas para el diseño de sistemas digitales para satisfacer requerimientos o necesidades específicas de una aplicación.
Descripción
En este curso se estudia el diseño de sistemas digitales incluyendo aspectos relacionados a las metodologías de diseño e implantación, simulación, depuración y verificación de diseños complejos bajo una perspectiva computacional. El curso cubre los principios, metodologías y herramientas de diseño de sistemas electrónicos y computacionales a la medida, y está organizado para proporcionar una visión moderna de los sistemas digitales. Se presentan los aspectos más relevantes del uso de lenguajes de Descripción de hardware, la síntesis de alto nivel y técnicas de optimización dentro del marco de diseño asistido por computadora. El curso tiene una componente práctica importante basada en la tecnología de lógica programable como plataforma de desarrollo y el uso de herramientas asistidas por computadora (CAD) asociada a esta tecnología.
Contenido
1. Introducción
a. Evolución y tendencia tecnológica
b. Espacio y objetivos de diseño
c. Métricas de desempeño
d. Componentes del procesos de diseño
e. Diseño asistido por computadora
f. Tecnologías de implementación
2. Señales y sistemas digitales
a. Principios básicos
b. Muestreo de señales en tiempo continuo
c. Teorema de muestreo
d. Representación numérica aritmética en punto fijo
3. Metodología de diseño de sistemas complejos
a. Especificaciones de diseño
b. Modelado y niveles de abstracción
c. Metodología top-down y bottom-up
d. Jerarquía de diseño
e. Co-diseño hardware/software
f. Verificación de diseño
4. Lenguajes de Descripción de hardware
a. Objetivos de HDLs
b. Estructura, temporización y concurrencia
c. Sintaxis, semántica y pragmática
d. Modelado estructural y RTL
e. Caso de estudio VHDL
f. Estructuras secuenciales y concurrentes
g. Modelado de componentes discretos
h. Administración de diseños
i. Generación de bancos de pruebas
5. CAD y síntesis digital
a. Lenguajes de modelado y formalismos de especificación
b. Fundamentos de síntesis digital
c. Calendarización/asociación de funciones y componentes
d. Representación y optimización
e. Síntesis de data-path y control
f. Máquinas de estados finitos y microprogramadas
g. Arreglos de Compuertas Programables en Campo (FPGAs)
h. Síntesis de alto nivel en FPGAs
Bibliografía
· Shoab Ahmed Khan, Digital design of signal processing systems: a practical approach. Wiley, 2011.
· Laung-Terng Wang, Yao-Wen Chang, Kwang-Ting Cheng, Electronic desig automation: synthesis, verification and Test. Morgan Kauffman, 2009.
· K. C. Chang, Digital systems design with VHDL and synthesis: An integrated approach. IEEE Computer Society Press, 1999.
· Pong P. Chu, RTL hardware design using VHDL: coding for efficiency, portability, and scalability. Wiley-IEEE press, 2006.
· Giovanni De Micheli, Synthesis and optimization of digital circuits. McGraw-Hill, 1994.
ITC-212: Robots Móviles Inteligentes
Objetivo
Conocer 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.
Descripción
La robótica móvil inteligente se centra principalmente en el desarrollo de robots móviles capaces de realizar distintas tareas con mínima intervención humana, es decir, desarrollar vehículos que sean capaces de percibir su medio ambiente y extraer la información necesaria para realizar sus propias decisiones en busca de alcanzar un objetivo particular. En este curso se enseñarán los conceptos básicos de la robótica móvil autónoma y la teoría que la concierne. Se explicarán características básicas como la programación de comportamientos reactivos, y los principios de funcionamiento de sensores y actuadores. Con el uso de kits de robótica, se diseñarán robots capaces de realizar tareas simples del tipo “evitar obstáculos”, “seguimiento de líneas” y “limpieza de superficies”.
Contenido
1. Introducción
a. ¿Qué es un robot?
b. Historia y motivaciones
c. Clasificación de robots
d. Componentes principales y conceptos básicos
e. Problemáticas
f. Aplicaciones
2. Arquitectura de robots móviles
a. Diseño de robots móviles
b. Mecánica
c. Modelos matemáticos
d. Clasificación de robots móviles
3. Percepción
a. Sensores propioceptivos
b. Sensores exteroceptivos
c. Ruido
d. Imprecisión
e. Caracterización de sensores
f. Filtros
4. Modelos de comportamiento
a. Definiciones
b. Motivaciones biológicos
c. Vehículos de Braitenberg
5. Control de robots móviles
a. Sistemas lineales
b. Control en lazo abierto y en lazo cerrado
c. Elementos de control
d. Sistemas no holonómicos
e. Principios de lógica difusa
f. Principios de programación en tiempo real
6. Visión por computadora
a. Principios
b. Filtros
c. Características invariantes
d. Color
e. Reconocimiento de patrones
7. Modelado del entorno
a. Definiciones
b. Representaciones geométricas
c. Representaciones topológicas
d. Espacio de configuraciones
e. Localización
f. Construcción de mapas
8. Planificación de trayectorias
a. Definiciones. Enfoque local y global del problema de planificación
b. Grafos de visibilidad y de tangentes
c. Planificación por frentes de onda
d. Campos de potencial artificial
e. Planificadores cinemáticas
f. Algoritmos bio-inspirados
9. Robots inteligentes
a. Procesos de decisión de Markov
b. Métodos básicos de solución
c. Clasificadores
d. Aprendizaje por refuerzo
10. Temas avanzados en robótica móvil
a. Interacción hombre-máquina
b. Sistemas multirobots
c. Robots humanoides
d. Aplicaciones específicas
Bibliografía
· G. Dudek, M. Jenkin, Computacional principles of mobile robots. Cambridge University Press, 2nd Ed., 2010.
· Roland Siegwart, Illah Reza Nourbakhsh, Davide Scaramuzza, Introduction to Autonomous Mobile Robots. The MIT Press, 2nd Ed., 2011.
ITC-213: Seguridad Informática
Objetivo
Revisar los temas más importantes relacionados con la seguridad informática que afectan a los sistemas de información. l
Descripción
El curso está organizado en cuatro partes fundamentales. La primera está dedicada a la introducción a los tópicos de seguridad informática. En la segunda se revisan los fundamentos criptográficos para proveer servicios de seguridad y algunas aplicaciones. La tercera parte cubre aspectos de seguridad perimetral en redes de computadoras. La parte final del curso comprende temas relacionados con la seguridad en los sistemas de cómputo y seguridad de software.
Contenido
1. Introducción al curso
a. Introducción a la seguridad informática, y al curso
b. Conceptos generales de la seguridad informática
c. Vulnerabilidades, riesgos, amenazas, y ataques
d. Políticas de seguridad y estándares
2. Criptografía Aplicada
a. Introducción a la criptografía
b. Bases de la criptografía de llave privada
c. Funciones picadillo
d. Bases de la criptografía de llave pública
e. Autenticación de mensajes
f. Infraestructura de llave pública
g. Firma electrónica en México
h. Temas selectos de criptografía aplicada
3. Seguridad perimetral en redes
a. Cortafuegos
b. Detectores y prevensores de intrusos
c. Protocolo IPSec
d. VPNs (aspectos teóricos y prácticos)
e. Protocolos de seguridad WEP, WAP, TLS
f. Presentación tópico especial sobre seguridad en sistemas ubicuos (con ECC, PBC, e IBE)
4. Seguridad en software y políticas
a. Control de acceso (Listas, roles, etc.)
b. Almacenamiento seguro de contraseñas y seguridad en base de datos
c. Seguridad en aplicaciones web
d. Malware y virus modernos
e. Vulnerabilidades de software
f. Diseño de software seguro
g. Denegación de servicio (ataques y contramedidas)
h. Hacking, Ingeniería social y cibercrimen
i. Mesa de discusión sobre Leyes en materia de crimen cibernético y su alcance
Bibliografía
· Christof Paar, Jan Pelzl, Understanding Cryptography: A text for students and practitioners. Springer, 2010.
· Jeffrey Hoffstein, Jill Pipher, Joseph H. Silvermann, An introduction to Mathematical Cryptography. Springer, 2008.
· L. G. De la Fraga, Seguridad en Redes de Computadoras Usando GNU/Linux. Notas del curso impartido el 9 de septiembre 2004 en el 1st International Conference on Electrical and Electronics Engineering. Acapulco, Guerrero. September 8-10, 2004.
· William Stallings, Cryptography and Network Security: Principles and Practice. Prentice Hall, 5th Ed., 2011.
· Alexander Clemm, Network Management Fundamentals. Cisco Press, 2006.
· Stephen Northcutt, Judy Novak, Network Intrusion Detection. Sams Publisher, 3rd Ed., 2002.
ITC-303: Metaheurísticas Avanzadas
Objetivo
Al finalizar el curso el alumno conocerá una colección de métodos metaheurísticos para optimización, entre ellos modernos y clásicos, con relevancia teórica y/o práctica. Será capaz de analizar los escenarios de aplicación, elegir la metaheurística más adecuada para un problema en particular, implementarla y hacer modificaciones pertinentes en cada caso.
Descripción
Este curso consiste de un repaso de las metaheurísticas históricamente relevantes, llegando a propuestas contemporáneas. Se comenzará con los temas teóricos de las condiciones necesarias y suficientes, así como su aplicación en métodos analíticos. Posteriormente se repasará una serie de métodos numéricos, tanto directos como de gradiente, que resuelven el problema de optimización incrementalmente, desde su versión más simple hasta las más generales. Por último, las metaheurísticas actuales, ya sea de un solo punto o poblacionales. En todos los casos se habla de su motivación, aplicabilidad y temas abiertos de investigación. Posteriormente se revisarán algunos temas de diseño, como es el control de parámetros o los algoritmos híbridos. Para terminar, se hablará de las técnicas de paralelización más comúnmente utilizadas con metaheurísticas.
Contenido
1. Métodos clásicos
a. Condiciones necesarias y suficientes para funciones univariables
b. Condiciones necesarias y suficientes para funciones multivariables
c. Condiciones de Khun-Tucker.
d. Condiciones de Khun-Tucker para funciones multiobjetivo
2. Métodos numéricos
a. Métodos directos univariables
b. Métodos de gradiente univariables
c. Métodos directos multivariables
d. Métodos de gradiente multivariables
e. Manejo de restricciones
f. Optimización multiobjetivo
3. Metaheurísticas basadas en una solución
a. Búsqueda local
b. Búsqueda tabú
c. Búsqueda local iterada
d. Búsqueda en vecindario variable
e. Búsqueda local guiada
4. Metaheurísticas poblacionales
a. Búsqueda dispersa
b. Optimizador del lobo gris
c. Búsqueda cuco
d. Algoritmo de abejas
e. Algoritmo de luciérnagas
5. Control de parámetros
a. Sintonización de parámetros
b. Adaptación en línea
6. Algoritmos híbridos
a. ¿Por qué hibridar?
b. ¿Dónde hibridar?
c. Búsqueda de grano fino vs. búsqueda de grano grueso
7. Metaheurísticas paralelas
a. Paralelismo global
b. Paralelismo de grano grueso
c. Paralelismo de grano fino
Bibliografía
· El-Ghazali Talbi, Metaheuristics: From Design to Implementation. John Wiley and Sons, 2009.
· Zbigniew Michalewicz, David B. Fogel, How to Solve It: Modern Heuristics. Springer, 2nd Ed., 2004.
· Singiresu S. Rao, Engineering Optimization: Theory and Practice. John Wiley and Sons, 4th Ed., 2009.
· Kalyanmoy Deb, Optimization For Engineering Design: Algorithms and Examples. Prentice Hall, 2nd Ed., 2013.
ITC-304 Topicos Selectos en Optimizacion Combinatoria
Objetivo:
El objetivo general del curso de tópicos selectos de optimización combinatoria es presentar aspectos fundamentales avanzados de la optimización combinatoria.
Como objetivos específicos este curso cubre diversas alternativas para la: representación de un problema; definición de la función a optimizar; creación de diseños experimentales; y sintonización de algoritmos.
Descripción:
Se considera que el estudiante que tome este curso tiene experiencia trabajando con algoritmos de optimización combinatoria (algoritmos genéticos, recocido simulado, búsqueda tabú, etc. ) dado que el énfasis está en la revisión de aspectos relacionados con la eficiente solución de problemas bajo el paradigma de la optimización combinatoria. En este curso se hace énfasis en las diversas alternativas que existen para representar un problema, ajustar la función a optimizar, realizar un diseño experimental adecuado, y sintonizar los parámetros del algoritmo a utilizar. En la representación de un problema se revisaran alternativas como: grafos, permutaciones, particiones de un conjunto, cadenas de crecimiento restringido, y representaciones vectoriales. En el contexto de la función objetivo se cubren diversas alternativas para la función objetivo para problemas mono-objetivo y multi-objetivo. En el contexto del diseño experimental se cubren: diseños factoriales completos, diseños factoriales fraccionarios, arreglos ortogonales, arreglos de cobertura (covering arrays) y ecuaciones Diofánticas. En el contexto de la sintonización de parámetros se revisa el análisis estadístico del diseño experimental para poder sintonizar adecuadamente los parámetros de los algoritmos.
Contenido:
I. El problema de la representación
- Representaciones usando grafos
- Representaciones usando permutaciones
- Representaciones usando particiones
- Representaciones usando cadenas de crecimiento restringido
- Representaciones usando polinomios y vectores
II. El problema de la función objetivo
- Suavización de funciones mono objetivo
- Escalamiento de funciones con múltiples objetivos
III. El problema del diseño experimental
- Diseños Factoriales
- Arreglos Ortogonales
- Arreglos de Cobertura (Covering Arrays)
- Ecuaciones Diofánticas
IV. El problema de la sintonización de algoritmos
- Revisión de métodos de análisis paramétrico
- Revisión de métodos de análisis no-paramétrico
Bibliografía:
1. Donald L. Kreher , Douglas R. Stinson, Combinatorial Algorithms: Generation, Enumeration, and Search, CRC Press; 1st edition 1998, ISBN-10: 084933988X, ISBN-13: 978-0849339882
2. Yann Collette, Patrick Siarry, Multiobjective Optimization: Principles and Case Studies, Springer 2013,ISBN-10: 3642072836, ISBN-13: 978-3642072833
3. D. Richard Kuhn, Raghu N. Kacker, Yu Lei, Introduction to Combinatorial Testing, CRC Press 2013, ISBN-10: 1466552298, ISBN-13: 978-1466552296
4. David J. Sheskin, Handbook of Parametric and Nonparametric Statistical Procedures, Chapman and Hall/CRC, Fifth Edition 2011, ISBN-10: 1439858012, ISBN-13: 978-1439858011
5. Emile Aarts, Jan Karel Lenstra, Local Search in Combinatorial Optimization, Wiley 1997, ISBN-10: 0471948225, ISBN-13: 978-0471948223
ITC-305: Tópicos Selectos en Inteligencia Computacional
Objetivo
Profundizar en los aspectos teóricos y prácticos de los temas de inteligencia computacional, y principalmente de computación evolutiva. Analizar propuestas actuales y problemas abiertos, tanto en el diseño de los algoritmos como en la aplicación en problemas específicos.
Descripción
En este curso se profundizará en los paradigmas de computación evolutiva, así como otros algoritmos de inteligencia computacional para optimización. Comenzando con los paradigmas clásicos, se verán las principales cuestiones de diseño y algunas propuestas actuales, que responden a retos particulares del planteamiento del problema y desempeño en la aplicación. Posteriormente se revisarán algunas variantes generales del problema de optimización numérica, y las extensiones que han sido propuestas para lidiar con ellos. Para terminar, se hará una revisión de los aportes teóricos, donde se repasarán aquellos más importantes, que han clarificado las propiedades de los algoritmos, así como las limitaciones que presentan.
Contenido
1. Estrategias evolutivas a fondo
a. Operadores
b. Selección
c. Autoadaptación y matrices de covarianza
2. Programación evolutiva a fondo
a. Operadores
b. Selección
c. Programación evolutiva rápida
3. Algoritmos genéticos a fondo
a. Terminología
b. Representación
c. Técnicas de selección
d. Operadores genéticos (cruza y mutación)
4. Manejo de restricciones en computación evolutiva
a. Superioridad de puntos factibles
b. Mapeos homomorfos
c. Jerarquización estocástica
d. Enfoques basados en optimización multiobjetivo
e. Métodos híbridos
f. Evolución diferencial generalizada
5. Ambientes dinámicos
a. Mecanismos en algoritmos evolutivos
b. EP y ES en ambientes dinámicos
6. Optimización multiobjetivo
a. Optimalidad de Pareto
b. Algoritmos representativos del estado del arte
c. Manejo de diversidad
d. Métricas y problemas de prueba
7. Aportaciones teóricas
a. Funciones separables
b. Invarianza rotacional
c. Ajuste de contornos
d. Demostraciones de convergencia
e. Bloques constructores
f. Paralelismo implícito
g. Teorema de los esquemas
h. Problemas deceptivos
i. Funciones de la carretera real
j. No hay almuerzo gratis
Bibliografía
· Agoston E. Eiben, J. E. Smith, Introduction to Evolutionary Computing. Springer, 2007.
· Russell Eberhart, Yuhui Shi, Computational Intelligence: Concepts to Implementations. Morgan Haufmann, 2007.
· Kenneth Price, Rainer M. Storn, Differential Evolution: A Practical Approach to Global Optimization. Springer, 2005.
· Carlos A. Coello Coello, David A. Van Veldhuizen, Gary B. Lamont, Evolutionary Algorithms for Solving Multi-Objective Problems, Kluwer Academic Publishers, 2nd Ed., 2007.
· Kalyanmoy Deb, Multi-Objective Optimization using Evolutionary Algorithms, John Wiley & Sons, 2009.
ITC-306: Tópicos Selectos en Redes de Computadoras
Objetivo
Este curso tiene como objetivo el estudio de las tecnologías y protocolos más avanzados para la construcción de redes de computadoras y redes de comunicaciones fijas y móviles. El curso tambien persigue que el alumno adquiera conocimientos teóricos y prácticos de los requerimientos y técnicas más actualizadas que requieren las redes de computadoras y comunicaciones para el aprovisionamiento de calidad de servicio de una manera automática.
Descripción
En este curso se estudian las técnicas más recientes para la construcción de redes de computadoras y protocolos de comunicación. Se revisan las tecnologías y protocolos de comunicación utilizadas en redes fijas y móviles. Se analizan los requisitos de servicio que demandan las nuevas aplicaciones multimedia. Se estudian las arquitecturas y tecnologías para el aprovisionamiento de calidad de servicio en redes de próxima generación. Se describen los conceptos fundamentales de gestión de redes y servicios, como un instrumento para el aprovisionamiento de calidad de servicio. Se describen las tecnologías emergentes para realizar la automatización de las tareas de gestión de red en ambientes dinámicos. Se realizan simulaciones mediante software especializado con el fin de aplicar los conocimientos adquiridos en el curso.
Contenido
1. Calidad de Servicio en Redes de Próxima Generación. Parámetros de calidad de servicio, mecanismos de “scheduling” y “policing”, arquitectura de servicios diferenciados (DiffServ) y de servicios integrados (IntServ).
2. Gestión de Redes. Conceptos generales de gestión de redes y servicios, infraestructuras y marcos de referencia para gestión de red, gestión de red y aprovisionamiento de calidad de servicio en redes de próxima generación.
3. Automatización en la Gestión de Redes y Servicios. Introducción a las comunicaciones y computación autónomas, gestión basada en políticas, caso de uso de automatización de gestión de redes y servicios de próxima generación.
4. Redes Inalámbricas. Clasificación de redes inalámbricas según ámbito de cobertura, características de redes inalámbricas, redes inalámbricas de área local 802.1X, estándares y redes celulares, movilidad en redes celulares
5. Sistemas celulares. Fundamentos de comunicaciones celulares, arquitectura y funciones generales de sistemas celulares, gestión de recursos.
6. Mecanismos avanzados de gestión de recursos en UMTS. Conceptos fundamentales y arquitectura de red de UMTS, mecanismos de gestión de QoS y gestión de recursos.
Bibliografía
· James F. Kurose, Amhersteith W. Ross, Computer Networking: A Top-Down Approach. Addison-Wesley, 5th Ed., 2010.
· Ramjee Prasad, Albena Mihovska, New Horizons in Mobile and Wireless Communications, Volume 1: Radio Interfaces. Artech House, 2009.
· Ramjee Prasad, Albena Mihovska, New Horizons in Mobile and Wireless Communications, Volume 2: Networks, Services and Applications. Artech House, 2009
· Ramjee Prasad, Albena Mihovska, New Horizons in Mobile and Wireless Communications, Volume 3: Reconfigurability. Artech House, 2009.
· Ramjee Prasad, Albena Mihovska, New Horizons in Mobile and Wireless Communications, Volume 4: Ad Hoc Networks and PANs. Artech House, 2009.
· Alan B. Johnston, SIP: Understanding the Session Initiation Protocol. Artech House, 3rd Ed., 2009.
· Byeong Gi Lee, Sunghyun Choi, Broadband Wireless Access & Local Networks: Mobile WiMAX and WiFi. Artech House, 2008.
· Sofoklis Kyriazakos, George Karetsos, Practical Radio Resource Management in Wireless Systems. Artech House, 2004.
· Thomas W. Rondeau, Charles W. Bostian, Artificial Intelligence in Wireless Communications. Artech House, 2009.
· Alfredo Mendoza, Utility Computing Strategies, Standards, and Technologies. Artech House, 2007.
· OPNET IT Guru, OPNET Modeler, OPNET Modeler Wireless Suite, and Specialized modules for Flow Analysis, MPLS, UMTS and WiMax and Documentation www.opnet.com.
· Gordon L. Stüber, Principles of Mobile Communication, Kluwer Academic Publishers, 2001.
· Maciej Nawrocki, Hamid Aghvami, Mischa Dohler, Understanding UMTS Radio Network Modelling, Planning and Automated Optimisation: Theory and Practice. John Wiley & Sons, 2006.
ITC-307: Tópicos Selectos de Sistemas Distribuidos
Objetivo
Que el estudiante conozca y experimente diversas técnicas y tecnologías de vanguardia utilizadas para la construcción de sistemas en entornos distribuidos y a gran escala, como son el cómputo en la nube, el procesamiento de grandes volúmenes de información y las tecnologías de la web semántica.
Descripción
El curso tendrá un contenido dinámico el cual se estará actualizando en función de los temas de vanguardia que surjan en el área de los sistemas distribuidos, en especial en aquellos temas orientados al procesamiento y análisis de grandes cantidades de datos.
Contenido
1. Cloud Computing
a. Introducción al Cloud computing
b. Tecnologías de virtualización
c. Infraestructura para Cloud Computing
d. Sistemas de almacenamiento
e. Aplicaciones y paradigmas
f. Sistemas para gestionar nubes
2. Servicios de almacenamiento y procesamiento masivo de información
a. Introducción a los sistemas de almacenamiento
b. El paradigma Map/Reduce
c. Caso de estudio: Hadoop
i. HDFS
d. Map/Reduce
i. HBase
e. El ecosistema de Hadoop
3. Tecnologías de la Web Semántica
a. Introducción a la Web Semántica
b. XML, XPATH y XQuery
c. RDF y SPARQL
Bibliografía
· Dan C. Marinescu, Cloud Computing: Theory and Practice. Morgan Kaufmann, 2013.
· Tom White, Hadoop: The Definitive Guide. Yahoo Press, 3rd Ed., 2012.
· Nick Antonopoulos, Lee Gillam, Cloud Computing Principles, Systems and Applications. Springer, 2010.
· Tom Fifield, OpenStack Operations Guide. Set up and manage your OpenStack cloud. O'Reilly Media, Inc., 2014.
· Grigoris Antoniou, Frank van Harmelen, A Semantic Web Primer. The MIT Press, 2008
· Bob DuCharme, Learning SPARQL, Querying and Updating with SPARQL 1.1. O'Reilly Media, 2nd Ed., 2013.
· Andrew S. Tanenbaum, Maarten van Oteen, Distributed Systems: Principles and Paradigms. Prentice Hall, 2nd Ed., 2006.
· Coulouris George, Dollimore Jean, Kindberg Tim, Blair Gordon, Distributed Systems: Concepts and Design. Addison Wesley, 5th Ed., 2011.
· Abiteboul Serge, Buneman Peter, Suciu Dan, Data on the Web, From Relations to Semistructured Data and XML. Morgan Kaufmann, 2000.
· Tamer Özsu, Patrick Valduriez, Principles of Distributed Database Systems. Springer, 3rd Ed., 2011.
ITC-308: Tópicos Selectos de Minería de Datos
Objetivo
Que el estudiante conozca las técnicas y tecnologías avanzadas de Big Data, Inteligencia Web, Minería de Texto y Minería Web.
Descripción
El curso introduce al estudiante los aspectos teóricos y prácticos sobre técnicas para el aprovechamiento de los datos mediante aplicaciones emergentes reales. Dado que es un curso preliminar al desarrollo de la tesis, se alienta la participación activa del estudiante. Durante el desarrollo del curso se evaluarán tareas y un proyecto final sobre el aprendizaje y experiencia que el estudiante vaya adquiriendo.
Contenido
1. Conceptos básicos
a. Búsqueda
b. Organización de información
c. Recuperación de Información
d. Aprovechamiento del Big Data
e. Aprendizaje en la Web
f. Aplicaciones
2. Minería de Texto
a. Representación de texto
b. Indexación
c. Preprocesamiento de texto
d. Diccionarios y tesauros
e. Búsqueda de texto
f. Medidas de similitud
g. Técnicas de procesamiento de texto
h. Técnicas de evaluación
i. Referencias y co-referencias
3. Minería Web
a. Búsqueda web
b. Organización mediante temas
c. Análisis de enlaces
d. Algoritmos de relevancia
e. Búsqueda web
f. Análisis de Redes Sociales
g. Análisis de uso web
h. Web Semántica
i. Linked Data
Bibliografía
· C. Manning, P. Raghavan, H. Schütze, Introduction to Information Retrieval. Cambridge University Press, 2008.
· Ricardo Baeza-Yates, Berthier Ribeiro-Neto, Modern Information Retrieval. The Concepts and Technology behind Search. Addison-Wesley, 2nd Ed., 2010.
· Bing Liu, Web Data Mining. Exploring Hyperlinks, Contents, and Usage Data. Springer, 2011.
· Pang-Ning Tan, Michael Steinbach, Vipin Kumar, Introduction to Data Mining. Addison Wesley, 2005.
· Jiawei Han, Micheline Kamber, Data Mining: Concepts and Techniques. Morgan Kaufmann, 2006.
· I.H. Witten, E. Frank, Data Mining: Practical Machine Learning Tools and Techniques. Morgan Kaufmann, 1999.
ITC-309: Cómputo Reconfigurable
Objetivo
Presentar los elementos básicos para crear arquitecturas digitales que implementen algoritmos de alta demanda computacional en dispositivos programables.
Descripción
El curso presenta los fundamentos y formalismo del Cómputo Reconfigurable así como metodologías y técnicas de como diseñar y aplicar arquitecturas bajo este enfoque en la solución de problemas que involucran una alta demanda computacional. Se presentan las herramientas y técnicas necesarias para el diseño, análisis y optimización de sistemas de cómputo reconfigurable basado en tecnología FPGA.
Contenido
1. Introducción
a. Conceptos básicos
b. Tecnologías de FPGAs
c. Arquitecturas de FPGAs
d. Bloques lógicos programables
e. Configuración y granularidades
2. Principios de diseño de computadoras
a. Modelo computacional
b. Sistemas basados en microprocesadores
c. Modelado del microprocesador MIPS
d. Abstracción hardware/software
e. Modelos de procesamiento paralelo
3. Cómputo reconfigurable
a. Fundamentos
b. Localidad funcional y temporal
c. Cómputo espacial
d. Sistemas de cómputo reconfigurable
e. Clasificación de arquitecturas reconfigurables
f. Reconfiguración estática y dinámica parcial
4. Implementación de aplicaciones computacionalmente intensivas
a. Relación entre arquitectura de computadoras y diseño de algoritmos
b. Naturaleza estructural de un algoritmo
c. Dependencias de datos y control
d. Representaciones topológicas abstractas
e. Problemáticas
5. Métricas de comparación de plataformas computacionales
a. Algunas métricas de desempeño
b. Normalización de métricas
c. Caracterización de recursos de implementación
d. Densidad computacional
6. Casos de estudio
a. Implicaciones de punto flotante en FPGAs
b. Sistemas bio-inspirados
c. Procesamiento de señales adaptivo
d. Arquitecturas criptográficas
Bibliografía
· Scott Hauck, Andre DeHon, Reconfigurable Computing: The Theory and Practice of FPGA-Based Computation. Morgan Kaufmann, 2007.
· David D. Patterson, John L. Hannessy, Computer organization and design. Morgan Kaufmann, 2012.
· Christophe Bobda, Introduction to Reconfigurable Computing: Architectures, Algorithms, and Applications. Springer, 2009.
· Patrick Lysaght, Wolfgang Rosenstiel, New Algorithms, Architectures and Applications for Reconfigurable Computing. Springer, 2010.
· Pao-Ann Hsiung, Marco D. Santambrogio, Chun-Hsian Huang, Reconfigurable System Design and Verification. CRC Press, 2009.
ITC-310: Tópicos Selectos en Ingeniería Computacional
Objetivo
Introducir las nuevas tendencias en ingeniería computacional. Por ejemplo, extender la teoría y metodologías del uso de técnicas de reconocimiento de patrones y redes neuronales artificiales. Introducir las nuevas tendencias en algoritmos cerebro-inspirados y sus arquitecturas, así como técnicas de inteligencia computacional aplicadas al reconocimiento de patrones.
Descripción
En el curso de tópicos selectos en análisis de datos el alumno extenderá sus conocimientos teóricos y prácticos en el uso de técnicas de reconocimiento de patrones y redes neuronales artificiales. En relación a los tópicos de reconocimiento de patrones, el curso tendrá énfasis en clasificadores ensamblados y técnicas de agrupamiento. Asimismo, habrá una sección especializada en redes neuronales pulsantes, las cuales modelan con mayor realismo la actividad neuronal biológica. Finalmente, se introducirán las nuevas tendencias en algoritmos bio-inspirados aplicados al análisis de datos.
Contenido
1. Métodos ensamblados
a. Algoritmos populares de clasificación
b. Métodos de boosting
c. Métodos de bagging
d. Combinación de clasificadores
e. Selección de clasificadores
2. Análisis de grupos
a. Introducción al análisis de grupos
b. Medidas de proximidad
c. Agrupamientos jerárquico y particional
d. Agrupamiento de datos a gran escala
e. Validez de grupos
3. Redes neuronales pulsantes
a. Principios biológicos
b. Codificación pulsada
c. Neuronas con memoria de corto plazo
d. Neuronas de integración/disparo
e. Plasticidad sináptica
f. Redes neuronales pulsantes en hardware
4. Tendencias bio-inspiradas
a. Técnicas populares de inteligencia computacional
b. Metaheurísticas para el análisis de datos
c. Metaheurísticas para el diseño de redes neuronales
Biliografía
· Z. H. Zhou, Ensemble Methods: Foundations and Algorithms. Chapman & Hall/CRC, 2012.
· R. Xu, D. C. Wunsch II, Clustering. John Wiley & Sons, 2009.
· W. Gerstner, W. M. Kistler, Spiking Neuron Models. Cambridge University Press, 2002.
· P. Engelbrecht, Computational Intelligence: An Introduction. Wiley, 2007.
ITC-311: Tópicos Selectos en Robótica Móvil Inteligente
Objetivo
El objetivo de este curso es estudiar y comprender los algoritmos y herramientas matemáticas empleadas en los sistemas de robots móviles encontrados en el estado del arte. La mayor parte de estas técnicas están basadas en un razonamiento de probabilidades y optimización, áreas ampliamente aplicadas en Inteligencia Artificial, por lo que se pretende incrementar la comprensión y manejo en estas dos áreas, con el propósito de desarrollar sistemas de planeación y control de robots móviles en tiempo real.
Descripción
En el curso de Tópicos Selectos de Robótica Móvil Inteligente, se discutirán temas directamente relacionados con los temas de tesis a desarrollar por los alumnos. Algunas temáticas susceptibles de tratarse en este curso son la Robótica Probabilista, para el diseño y control de robots tomando en cuenta la incertidumbre propia de un medio ambiente real; así como los fundamentos de la obtención de Estructura a partir de Movimiento, con el propósito de obtener una reconstrucción del medio ambiente a partir de imágenes obtenidas por la cámara embarcada en el robot y abordar la problemática de Navegación Visual de Robots Móviles.
Contenido
1. Introducción Robótica Probabilista
2. Modelos probabilistas de sensores y actuadores
3. Filtro de Bayes
4. Filtro de partículas, Filtro Extendido de Kalman
5. Problema de Autolocalización y Mapeo en robots móviles
6. Procesos de decisión de Markov
7. Aprendizaje reforzado
8. Introducción Visión por Computadora para Robots Móviles
9. Modelo de cámara oscura y geometría proyectiva
10. Filtrado y detección de puntos de interés en imágenes
11. Geometría epipolar y correspondencia estéreo
12. Matriz fundamental y algoritmo de RANSAC
13. Descripción y emparejamiento de puntos de interés
14. Construcción de mosaicos de imágenes
15. Estructura a partir de Movimiento
16. Reconstrucción a partir de múltiples imágenes
Bibliografía
· Sebastian Thrun, Wolfram Burgard, Dieter Fox, Probabilistic Robotics (Intelligent Robotics and Autonomous Agents series). MIT Press, 2005.
· Richard Szeliski, Computer Vision (Algorithms and Applications). Springer, 2011.
ITC-312: Análisis de Imágenes Digitales
Objetivo
Introducir los conceptos teóricos asociados con el análisis de imágenes digitales. Aplicar los conceptos teóricos aprendidos a problemas del mundo real mediante el desarrollo de algoritmos para el análisis de imágenes digitales.
Descripción
En el curso de análisis de imágenes digitales el alumno aprenderá los conceptos teóricos básicos sobre diversas técnicas de tratamiento de imágenes digitales y el reconocimiento de objetos. El curso está dividido en nueve unidades, cuyas temáticas están organizada de la siguiente manera: unidades 1 y 2 tratan sobre los fundamentos básicos del tratamiento de imágenes digitales; unidades 3 a 5 tratan sobre el procesamiento de bajo nivel (mejoramiento y filtrado); unidades 6 y 7 tratan sobre el procesamiento de medio nivel (segmentación y detección de objetos); y unidades 8 y 9 tratan sobre el procesamiento de alto nivel (reconocimiento e interpretación de la imagen). El curso fomenta la implementación de varios algoritmos vistos en clase para conectar la teoría con la práctica en problemas reales.
Contenido
1. Fundamentos del análisis de imágenes digitales
a. El proceso de análisis de imágenes
b. Concepto de imagen
c. Adquisición de imágenes
d. Muestreo y cuantificación
e. Formato de imágenes
f. Relaciones básicas entre píxeles
2. Transformaciones geométricas de la imagen
a. Interpolación de imágenes
b. Transformadas básicas de la imagen
c. Transformada de Fourier
d. Convolución
e. Otras transformadas separables
3. Mejoramiento de la imagen
a. Fundamentos
b. Transformaciones de intensidad simples
c. Procesamiento del histograma
d. Mejoramiento estadístico
e. Mejoramiento con secuencia de imágenes
f. Mejoramiento con técnicas difusas
4. Filtrado de imágenes
a. Tipos de ruido en imágenes
b. Filtrado espacial
i. Filtros suavizantes
ii. Filtros realzantes
c. Filtrado en el dominio de la frecuencia
i. Filtros suavizantes
ii. Filtros realzantes
iii. Filtro homomórfico
5. Operadores morfológicos
a. Fundamentos
b. Erosión y dilatación
c. Apertura y cerradura
d. Gradientes morfológicos
e. Operadores por reconstrucción
f. Algoritmos para imágenes binarias
6. Segmentación de imágenes
a. Fundamentos
b. Umbralado global y local
c. Segmentación orientada a regiones
d. Segmentación basada en técnicas de inteligencia computacional
e. Segmentación de objetos en movimiento
f. Evaluación de métodos de segmentación
7. Correspondencia de patrones
a. Template matching en el dominio espacial
b. Template matching en el dominio de la frecuencia
c. Transformada de Hough
d. Detección de color
8. Extracción de rasgos
a. Preprocesamiento de regiones
b. Descriptores basados en la morfología del objeto
c. Descriptores basados en la textura de un objeto
9. Reconocimiento de objetos
a. Patrones y clases de patrones
b. Selección de características y reducción de dimensionalidad
c. Clasificadores lineales
d. Clasificadores no lineales
e. Técnicas de optimización
Bibliografía
· Rafael C. Gonzalez, Richard E. Woods, Digital Image Processing. Prentice Hall, 3rd Ed., 2008.
· Rafael C. González, Richard E. Woods, Steven L. Eddins, Digital Image Processing Using MATLAB. Gatesmark Publishing, 2nd Ed., 2009.
· Pierre Soille, Morphological Image Analysis. Principles and Applications. Springer-Verlag, 2nd Ed., 2004.
· Gerhard X. Ritter, Joseph N. Wilson, Handbook of Computer Vision Algorithms in Image Algebra. CRC Press, 2nd Ed., 2001.
· Mark S. Nixon, Alberto S. Aguado, Feature Extraction and Image Processing. Newnes, 2002.
· Milan Sonka, Vaclav Hlavac, Roger Boyle, Image Processing, Analysis, and Machine Vision. Thomson, 3rd Ed., 2008.
ITC-313: BIoinformática
Objetivo
El objetivo de este curso es que el estudiante adquiera los conocimientos y habilidades necesarios para efectuar el análisis computacional de datos biológicos, con el fin de enunciar predicciones funcionales o estructurales sobre los mismos.
Descripción
En el curso se abordarán las principales áreas de la Bioinformática: bases de datos biológicas, alineamiento de secuencias, descubrimiento de genes y promotores, filogenética molecular, bioinformática estructural, genómica y proteómica. Simultáneamente, se analizarán algunas de las principales aplicaciones de la Bioinformática.
Contenido
1. Introducción a la Bioinformática
a. Panorama histórico de la Bioinformática
b. Análisis de secuencias de proteínas
c. Análisis de secuencias de DNA
d. Análisis de secuencias de RNA
e. Regiones de codificación del DNA
f. Genómica y Protéomica
2. Bases de datos (BD) biológicas
a. Tipos de BD biológicas
b. Problemas en las BD biológicas
c. Recuperación de información de BD biológicas
3. Alineamiento de secuencias
a. Alineamiento de pares
b. Búsqueda de similitud en BD
c. Alineamiento múltiple de secuencias
d. Perfiles y modelos ocultos de Markov
e. Descubrimiento de motivos y dominios de proteínas
4. Descubrimiento de genes y promotores
a. Descubrimiento de genes en Procariotas
b. Descubrimiento de genes en Eucariotas
c. Descubrimiento de promotores en Procariotas
d. Descubrimiento de promotores en Eucariotas
5. Filogenética molecular
a. Conceptos básicos de filogenética
b. Árboles filogenéticos
c. Métodos de construcción de árboles filogenéticos
6. Bioinformática estructural
a. Fundamentos de estructura de proteínas
b. Visualización, comparación y clasificación de estructura de proteínas
c. Predicción de estructura de proteínas
d. Predicción de estructura de RNA
7. Genómica y Proteómica
a. Cartografía genética
b. Ensamble genómico
c. Genómica funcional
d. Proteómica
Bibliografía
· Neil C. Jones and Pavel A. Pevzner. An Introduction to Bioinformatics Algorithms.F The MIT Press; 1st edition (August 1, 2004), ISBN-10: 0262101068.
· Cynthia Gibas and Per Jambeck. Developing Bioinformatics Computer Skills.F O'Reilly Media, Inc., 1st edition (April 15, 2001), ISBN-10: 1565926641.
· Jin Xiong. Essential BioinformaticsF Cambridge University Press, 1st edition (March 13, 2006), ISBN-10: 0521600820.
· Malcolm Campbell and Laurie J. Heyer. Discovering Genomics, Proteomics and Bioinformatics. Benjamin Cummings, 2nd edition (March 12, 2006), ISBN-10: 0805382194.
· Arthur M. Lesk. Introduction to Bioinformatics. Oxford University Press, USA, 3rd edition (June 2, 2008), ISBN-10: 0199208042.
· Dan Gus_eld. Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology. Cambridge University Press, 1st edition (May 28, 1997), ISBN-10: 0521585198.
· Gary B. Fogel, David W. Corne and Yi Pan (Editors). Computational Intelligence in Bioinformatics. Wiley-IEEE Press (December 2007), ISBN: 978-0-470-10526-9.
ITC-301: Seminario de Investigación I
Objetivo general
Elaborar el protocolo de investigación sobre el tema de tesis de maestría que desarrollará el alumno.
Objetivos específicos
· Obtener las habilidades básicas de investigación para la búsqueda de información, así como la comprensión y escritura de textos científicos.
· Investigar sobre los antecedentes, estado del arte y marco teórico del tema de tesis.
· Plantear el problema de investigación, generar hipótesis de investigación y definir objetivos, metas y alcances de la tesis.
· Plantear la metodología de desarrollo de la tesis.
Contenido
1. Introducción a la investigación científica
2. El proceso para el desarrollo de una tesis
3. Métodos, técnicas y herramientas de búsqueda de información
4. El estado del arte y los antecedentes de la investigación
5. Formulación de problemas, hipótesis y objetivos
6. Definición del marco teórico
7. Diseño de la metodología de desarrollo
8. Planeación temporal de la tesis
9. Aspectos formales y de notaciones
Requerimientos necesarios para aprobar el curso
· Entregar el protocolo de tesis aprobado por dos investigadores
· Entregar el documento de antecedentes y estado del arte
· Una presentación sobre artículos relevantes para el tema de tesis
· Una presentación sobre el protocolo de tesis con investigadores invitados
Requerimientos opcionales
· Examen exploratorio de inglés
· Implementaciones y/o desarrollos útiles para el tema de tesis
ITC-401: Seminario de Investigación II
Objetivo general
Desarrollar la metodología planteada en el protocolo de tesis.
Objetivos específicos
· Seleccionar los materiales y métodos que ayudarán en el desarrollo de la tesis.
· Afinar o inclusive modificar aspectos de la metodología planteada.
· Implementar y/o integrar las herramientas básicas para el desarrollo y los experimentos de la tesis.
· Conocer sobre técnicas y herramientas para el análisis y visualización de datos: primera parte.
· Cursar la materia de inglés (opcional).
Contenido
1. Visualización parte I
a. Introducción a la visualización de datos
b. Software para visualización y análisis de datos
c. Gráficos convencionales: barras, histogramas, líneas, cajas, dispersión, pie, etc.
d. Distribuciones y pruebas de hipótesis
2. Revisión de artículos relacionados a los materiales y métodos seleccionados para el tema de tesis
3. Redacción y buenas prácticas de escritura
Requerimientos necesarios para aprobar el curso
· Entregar el documento de materiales y métodos.
· Una presentación sobre los materiales y métodos seleccionados.
· Una presentación sobre los desarrollos e implementaciones realizadas.
Requerimientos opcionales
· Curso de inglés.
ITC-501: Seminario de Investigación III
Objetivo general
Presentar los resultados obtenidos a partir de la metodología de desarrollo planteada en el protocolo de tesis.
Objetivos específicos
· Desarrollar la experimentación y validación de la metodología planteada en la tesis.
· Recolectar y analizar los resultados obtenidos.
· Comparar los resultados con otros enfoques e interpretar los hallazgos.
· Conocer sobre técnicas y herramientas para el análisis y visualización de datos: segunda parte.
· Cursar la materia de inglés (opcional).
Contenido
1. Visualización parte II
a. Gráficos avanzados: superfices, modelos 3D, gráficos especializados
b. Modelado y regresión de datos
c. Visualización de datos de alta dimensionalidad
d. Animaciones y simulaciones
2. Redacción y buenas prácticas de escritura.
Requerimientos necesarios para aprobar el curso
· Entregar el documento de experimentación y resultados.
· Una presentación sobre los resultados obtenidos, aplicando los conceptos aprendidos en los temas de análisis y visualización de datos.
Requerimientos opcionales
· Curso de inglés.
· Redacción de un artículo, reporte técnico, manual de usuario, etc.
ITC-601: Seminario de Investigación IV
Objetivo general
Integrar el documento de tesis y preparar material de difusión.
Objetivos específicos
· Realizar las discusiones, conclusiones y tendencias futuras del trabajo de tesis.
· Integrar el documento de tesis a partir de las entregas en los seminarios anteriores.
· Realizar presentaciones de difusión sobre los trabajos de tesis, como posters, sesiones orales, demos, etc., como parte del TopTamaulipas.
Contenido
1. Consejos y buenas prácticas para la escritura de artículos científicos
2. Sesiones para revisar avances en la integración del documento de tesis
3. Sesiones para revisar avances en la escritura de un artículo
Requerimientos necesarios para aprobar el curso
· Entregar el documento de tesis que tentativamente será enviado al comité revisor.
· Entregar un artículo con los resultados de la tesis.
· Una presentación tipo examen de grado con investigadores invitados.
Requerimientos opcionales
· Enviar el artículo a un congreso o revista.
· Elaborar material de difusión: demos, videos, maquetas, páginas web, etc.
Curso de inglés.