Ciencias e Ingeniería de la Computación
La inmersión tecnológica del mundo actual ha propiciado el establecimiento de numerosos retos en donde se requiere del almacenamiento, organización, consulta y procesamiento de información proveniente de una gran variedad de fuentes. El objetivo de los participantes en la línea de investigación de Ciencias e Ingeniería de la Computación es generar modelos, algoritmos, arquitecturas y sistemas que permitan contribuir a enfrentar estos retos mediante la generación del conocimiento así como el desarrollo de servicios y prototipos innovadores. En esta línea de investigación se estudian, con un enfoque interdisciplinario, diversas problemáticas teóricas y aplicadas con el fin de contribuir al crecimiento científico y tecnológico. Enseguida se presenta una lista de las áreas de investigación abordadas en el posgrado.
Al dar clic sobre las líneas de investigación se mostrará una breve descripción. Dar clic aquí para mostrar todas las descripciones, y aquí para ocultarlas.
- Supercómputo (cómputo de alto rendimiento)
- Manejo de datos masivos (Big data)
- Web semántica
- Internet de las cosas
- Inteligencia artificial
- Inteligencia computacional
- Reconocimiento de patrones
- Aprendizaje automático
- Optimización y teoría matemática de la computación
- Continua
- Discreta
- Multiobjetivo
- Arquitectura y desarrollo de software
- Metodologías de desarrollo de arquitecturas de software
- Quality Attribute Workshops (QAW)
- Attribute-Driven Design (ADD)
- Architecture Tradeoff Analysis Method (ATAM)
- Metodologías de desarrollo de sistemas de software
- Metodologías clásicas: Personal/Team Software Process (PSP/TSP), Rational Unified Process (RUP)
- Modelos de calidad: Capability Maturity Model Integration (CMMI)
- Arquitectura Empresarial
- Sistemas distribuidos, P2P, cómputo móvil y en la nube
- Redes P2P
- Computación en la nube
El supercómputo es la utilización de computadoras con capacidades extraordinarias para la realización de investigación en diversas áreas del conocimiento, las cuales van desde el estudio de la estructura del universo hasta el comportamiento de partículas subatómicas. El supercómputo se emplea para entender y predecir el clima; estudiar los efectos de sismos; diseñar nuevos materiales, fármacos y reactores nucleares; simular nacimientos y explosiones de estrellas; además de analizar genomas, entre otras muchas cuestiones. Las supercomputadoras poseen capacidades de procesamiento, comunicaciones y almacenamiento que son decenas o centenas de veces mayores que las usadas por computadoras convencionales. Una supercomputadora puede realizar en unos cuantos días cálculos que en computadoras personales tomarían años para terminarse. En supercómputo confluyen equipos multidisciplinarios de científicos, matemáticos y computólogos, quienes crean, adaptan y utilizan software especializado.
Big data, denominado en español datos masivos o a gran escala, es un concepto que hace referencia al almacenamiento de grandes cantidades de datos y a los procedimientos usados para encontrar patrones repetitivos dentro de éstos. Las dificultades más habituales vinculadas al manejor de estas cantidades de datos se centran en su recolección, almacenamiento, análisis, búsqueda, compartición y visualización. En algunos casos, la manipulación de enormes cantidades de datos se debe a la necesidad de desarrollar informes estadísticos y modelos predictivos, empleados en análisis de negocios, publicidad, estudios de enfermedades infecciosas, espionaje, estudio de la población y la lucha contra el crimen organizado.
La web semántica es un conjunto de actividades desarrolladas con el objetivo de desarrollar tecnologías para publicar datos legibles por aplicaciones informáticas. Se basa en la idea de añadir metadatos semánticos y ontológicos a la World Wide Web (www). Esas informaciones adicionales, que describen el contenido, el significado y la relación de los datos, se deben proporcionar de manera formal, para que sea posible evaluarlas automáticamente por máquinas de procesamiento. El objetivo es mejorar Internet al ampliar la interoperabilidad entre los sistemas informáticos mediante el uso de agentes inteligentes, programas en las computadoras que buscan información sin operadores humanos.
Internet de las cosas es un concepto que se refiere a la interconexión digital de objetos cotidianos con Internet, así éstos podrían ser identificados y administrados por otros equipos, de la misma manera que si lo fuesen por seres humanos. Por ejemplo, si los libros, termostatos, refrigeradores, botiquines, la paquetería, las lámparas, partes automotrices, y cualesquiera otros objetos estuvieran conectados a Internet y equipados con dispositivos de identificación, no existirían, en teoría, artículos fuera de stock o medicinas o caducadas; se conocería exactamente se ubicación, cómo se consumen y compran en todo el mundo; el extravío de objetos sería cosa del pasado y se sabría qué está encendido o apagado en todo momento. Asimismo, en algún punto del tiempo podría haber más cosas que personas conectadas a Internet.
La inteligencia artificial (IA) comprende el estudio y la creación de sistemas capaces de aprendender nuevos conceptos y tareas; de razonar y derivar conclusiones útiles acerca del mundo que los rodea; de comprender un lenguaje natural o percibir y comprender una escena visual, y de realizan cualquier otro tipo de actividades que requieren inteligencia. El objetivo de la IA es entender la naturaleza de la inteligencia mediante el diseño de sistemas computacionales que la exhiban; en forma más concreta, puede afirmarse que la IA ha estado dirigida por el análisis teórico de las posibles explicaciones del comportamiento inteligente; la explicación de habilidades mentales humanas, y la construcción de dispositivos inteligentes.
La inteligencia computacional (IC) se centra en el estudio de mecanismos adaptables para permitir el comportamiento inteligente de sistemas complejos y cambiantes. A diferencia de la IA clásica, que busca resolver los problemas de manera exacta, la inteligencia computacional utiliza técnicas aproximadas, tales como las metaheurísticas y losalgoritmos de búsqueda parcial dirigida como las redes neuronales, la computación evolutiva, la inteligencia de enjambres, los sistemas inmunes artificiales y los sistemas de lógica difusa. También se relaciona con técnicas como los fractales, la teoría del caos, las ondeletas (wavelets), los autómatas celulares, entre otros. La IC combina elementos de aprendizaje, adaptación, evolución y lógica difusa para crear programas que son inteligentes.
El reconocimiento de patrones se encarga de la identificación, descripción y clasificación de objetos, personas, señales y representaciones. Para lograrlo, se basa en un conjunto previamente establecido de todos lo que se desea reconocer. Su margen de aplicación es muy amplio y las más importantes están relacionadas con la visión y audición. El esquema de un sistema de reconocimiento de patrones consta de varias etapas relacionadas, ya que los resultados de una etapa pueden modificar los parámetros de etapas anteriores. Una de éstas es la de los sensores, los cuales tienen como propósito proporcionar una representación factible de los elementos que se desea clasificar; la segunda etapa es la extracción de características y se encarga de extraer la información discriminatoria a partir del patrón de representación. mediante la eliminación de información redundante e irrelevante. Por úlitmo, la etapa del clasificador es se realiza la toma de decisiones en el sistema. Su rol es asignar los patrones de clase desconocida a la categoría apropiada.
El aprendizaje automático, maquinal o de máquinas tiene como objetivo desarrollar técnicas que permitan a las computadoras aprender. De forma más concreta, se trata de la creación de programas capaces de generalizar comportamientos a partir de información no estructurada que se suministra en forma de ejemplos. Por ello, es un proceso de inducción del conocimiento. En muchas ocasiones el campo de actuación del aprendizaje automático se superpone con el de la estadística, ya que las dos disciplinas se basan en el análisis de datos. Sin embargo, el aprendizaje automático se centra más en el estudio de la complejidad computacional de los problemas. Muchos problemas son de clase NP-difícles, por lo que gran parte de la investigación realizada en aprendizaje automático está enfocada al diseño de soluciones factibles a esos problemas. El aprendizaje automático puede ser visto como un intento de automatizar algunas partes del método científico mediante métodos matemáticos. Tiene una amplia gama de aplicaciones, entre las que se incluyen los motores de búsqueda, los diagnósticos médicos, la detección de fraude en el uso de tarjetas de crédito, el análisis del mercado de valores, la clasificación de secuencias de ADN, el reconocimiento del habla y del lenguaje escrito, los juegos y la robótica.
En matemáticas, estadísticas, ciencias empíricas, computación y economía, la optimización matemática es la selección del mejor elemento (con respecto a algún criterio) de un conjunto de elementos disponibles. En el caso más simple, un problema de optimización consiste en maximizar o minimizar una función real eligiendo sistemáticamente valores de entrada (tomados de un conjunto permitido) y computando el valor de la función. La generalización de la teoría de la optimización y técnicas para otras formulaciones comprende un área grande de las matemáticas aplicadas. De forma general, la optimización incluye el descubrimiento de los "mejores valores" de alguna función objetivo dado un dominio definido, incluyendo una variedad de diferentes tipos de funciones objetivo y diferentes tipos de dominios.
Para la optimización continua, el espacio de búsqueda corresponde a una o más variables que pueden tomar valores en el dominio de los números reales (hasta en n dimensiones).
Para la optimización discreta o combinatoria, el espacio de búsqueda corresponde a un conjunto finito o posiblemente contable infinito, como el de los números enteros, los conjuntos, alguna permutación, o un grafo, etcétera.
A menudo se tienen problemas que requieren la optimización simultánea de más de un objetivo, por lo que se necesita optimizar una función en la que normalmente no existe un elemento que produzca un óptimo de forma simultánea para cada uno de los objetivos. Esto se debe a la existencia de conflictos entre los objetivos, lo que provoca que la mejora de uno de ellos dé lugar al empeoramiento de algún otro. Un ejemplo sería el caso de un avión con dos objetivos: su velocidad y el ahorro de combustible, se sabe que un aumento de la velocidad traería consigo una disminución del ahorro, por ello se tendrá una situación de compromiso en la que todos los objetivos sean satisfechos en un grado aceptable, desde el punto de vista de diseño. A diferencia de los problemas de optimización con un único objetivo, el concepto de óptimo es ahora relativo y será necesario decidir de alguna forma cuál es la mejor solución (o soluciones) para el problema.
La arquitectura de software es un conjunto de patrones que proporcionan un marco de referencia necesario para guiar la construcción de un software, lo que permite a los programadores, analistas y todo el conjunto de desarrolladores compartir una misma línea de trabajo y cubrir todos los objetivos y restricciones de la aplicación. Es considerada el nivel más alto en el diseño de la arquitectura de un sistema puesto que establecen la estructura, funcionamiento e interacción entre las partes del software. La arquitectura de software forma la columna vertebral para construir un sistema, asimismo es responsable de permitir o no ciertos atributos de calidad del sistema entre los que se destacan la confiabilidad y el rendimiento. Además es un modelo abstracto reutilizable que puede transferirse de un sistema a otro y que representa un medio de comunicación y discusión entre participantes de un proyecto, lo que permite la interacción e intercambio de ideas, conocimientos y recursos entre los desarrolladores.
Un sistema distribuido se define como una colección de computadoras separadas físicamente y conectadas entre sí por una red de comunicaciones; cada máquina posee sus componentes de hardware y software que el programador percibe como un solo sistema (no necesita saber qué cosas están en qué máquinas). El programador accede a los componentes de software (objetos) remotos, de la misma manera en que accedería a componentes locales, en un grupo de computadoras que usan un middleware para conseguir un objetivo. Los sistemas distribuidos proporcionan confiabilidad, ya que si un componente del sistema se descompone o falla, otro será capaz de reemplazarlo al vuelo.
Una red peer-to-peer, red de pares, red entre iguales o red entre pares (P2P, por sus siglas en inglés) es una red de computadoras en la que todos o algunos aspectos funcionan sin clientes ni servidores fijos, sino una serie de nodos que se comportan como iguales entre sí. Es decir, actúan simultáneamente como clientes y servidores respecto a los demás nodos de la red. Las redes P2P permiten el intercambio directo de información, en cualquier formato, entre los nodos interconectados. Normalmente este tipo de redes se implementan como redes superpuestas construidas en la capa de aplicación de redes públicas como Internet.Las redes peer-to-peer aprovechan, administran y optimizan el uso del ancho de banda de los demás usuarios de la red por medio de la conectividad entre los mismos, y obtienen así más rendimiento en las conexiones y transferencias que con algunos métodos centralizados convencionales, donde una cantidad relativamente pequeña de servidores provee el total del ancho de banda y recursos compartidos para un servicio o aplicación. Este tipo de red también suele usarse en telefonía VoIP para hacer más eficiente la transmisión de datos en tiempo real. La eficacia de los nodos en el enlace y transmisión de datos puede variar según su configuración local (infrastructura de red), velocidad de proceso, disponibilidad de ancho de banda de su conexión a la red y capacidad de almacenamiento en disco.
La computación en la nube, conocida también como servicios en la nube, informática en la nube, nube de cómputo o nube de conceptos (del inglés cloud computing), es un paradigma que permite ofrecer servicios de computación a través de una red, que usualmente es Internet. La computación en nube tiene la capacidad de mejora para ofrecer recursos tecnológicos al usuario por parte del proveedor. En este paradigma los costos se reducen porque en los modelos de prestación pública en la nube, los gastos de capital se convierten en gastos de funcionamiento, lo que reduce barreras de entrada porque la infraestructura se proporciona típicamente por una tercera parte y no tiene que ser adquirida por una sola vez o tareas informáticas intensivas infrecuentes. Asimismo, la provisión de recursos se hace sobre una base de autoservicio en casi en tiempo real, sin que los usuarios necesiten cargas de alta duración. La computación en la nube permite la independencia entre dispositivos y ubicación porque los usuarios pueden acceder a los sistemas utilizando un navegador Web, independientemente de su ubicación o del dispositivo que utilice (por ejemplo, PC, teléfono móvil). Con ello, la tecnología de virtualización permite compartir servidores y dispositivos de almacenamiento y una mayor utilización. Las aplicaciones pueden ser fácilmente migradas de un servidor físico a otro. Además, los sistemas en la nube controlan y optimizan el uso de los recursos de manera automática, dicha característica permite un seguimiento, control y notificación, lo cual aporta transparencia tanto para el consumidor como para el proveedor de servicio. En cuanto a la seguridad, ésta es a menudo tan buena o mejor que otros sistemas tradicionales, en parte porque los proveedores son capaces de dedicar recursos a la solución de los problemas de seguridad que muchos clientes no pueden permitirse el lujo de abordar. El usuario de la nube es responsable de la seguridad a nivel de aplicación. El proveedor de la nube es responsable de la seguridad física. Finalmente, el mantenimiento de las aplicaciones de computación en la nube es más sencillo porque no necesitan instalarse en los equipos de cada usuario, es el proovedor quien determina las mejores técnicas, tiempos y políticas de mantenimiento
Última actualización: June 6, 2018 at 16:24 pm