Las Jornadas de Ciencias de la Computación (JCC) se presentan como una iniciativa del Departamento de Ciencias de la Computación de la Facultad de Ciencias Exactas, Ingeniería y Agrimensura de la Universidad Nacional de Rosario, de carácter abierto y gratuito con el objetivo de promover el contacto de los alumnos de la Facultad con investigadores y profesionales en temas relacionados con el ámbito de las ciencias de la computación, al mismo tiempo que nos permite mantenernos actualizados sobre las tendencias en investigación y desarrollo que se realizan en la región.
La edición 2014 de las JCC se realizaron los días 15, 16 y 17 de Octubre en el salón de actos de la Facultad de Ciencias Exactas, Ingeniería y Agrimensura de Rosario, en el horario de 10:00 a 20:00
Las JCC se llevaron a cabo por primera vez en noviembre del año 2000. Año tras año han participado decenas de personas provenientes de empresas de desarrollo de software local, estudiantes e investigadores de esta casa de estudios y de universidades destacadas de la zona, entre las cuales podemos mencionar a la Universidad Nacional de La Plata, Universidad Nacional de Córdoba, Universidad Nacional de Río Cuarto y la Universidad de la República (Montevideo-Uruguay). La realización de las JCC es un proceso que continúa año a año y constituye un logro significativo del cuerpo de docentes y de estudiantes de la carrera Licenciatura en Ciencias de la Computación.
Los errores de corrupción de memoria están entre los más frecuentes de los programadores de lenguajes como C o C++. Para colmo, presentan un gran desafío desde el punto de vista de la seguridad del programa ya que pueden ser fácilmente utilizados para atacar un sistema.
Por otro lado, herramientas basadas en ptrace (e.g. ltrace) interceptan y registran las llamadas a funciones de librerías dinámicas de manera eficiente sin necesidad del código fuente del programa analizado. En este tutorial, se utilizarán las funciones provista por ptrace por medio de su binding de Python para examinar y detectar corrupción de memoria potencialmente vulnerable en aplicaciones reales.
Nota: Se recomienda llevar notebook con Vagrant instalado
Jueves 16: Salón de actos
Viernes 17: Laboratorio del 2do piso
por Gustavo Grieco (CIFASIS - CONICET)
Hace ya varios años se han realizado importantes desarrollos en el área de robótica móvil debido a las ventajas que provee en diversos campos de aplicación, entre los que se pueden enunciar: búsqueda y rescate de personas, detección de incendios y agricultura de precisión, entre otras. En este marco, uno de los principales problemas a resolver es el de SLAM (Simultaneous Localization And Mapping) donde un robot móvil debe ir construyendo un mapa del entorno al mismo tiempo que estima su posición en el mismo. Por otro lado, el uso de cámaras como principal unidad de sensado ha sido foco de interés debido a que estas son sensores pasivos (no interfieren con otros sensores), captan gran información del ambiente (permitiendo realizar detección de objetos, por ejemplo), y su bajo costo comercial. En esta charla se presentará un nuevo método desarrollado por el Laboratorio de Robótica y Sistemas Embebidos de la UBA, denominado STAM (Stereo Tracking And Mapping) que utiliza una cámara estéreo para abordar el problema de SLAM. Además, se mostrarán otros métodos de navegación basada en visión desarrollados por el grupo.
por Taihú Pire (UBA)
En esta charla presentaré IEPY (Information Extraction for Python), una plataforma de software libre para el desarrollo de aplicaciones de Extracción de Información. La Extracción de Información trata el problema del análisis de documentos de texto no estructurado para encontrar y estructurar determinada información de interés. En IEPY, la información se estructura en entidades, como personas, lugares y fechas, y relaciones entre las entidades, como la presencia de una persona en determinado lugar y/o momento.
En una etapa de preprocesamiento, IEPY analiza los documentos automáticamente, segmentándolos en palabras y oraciones, haciendo etiquetado POS. Luego, IEPY realiza el reconocimiento de entidades (Named Entity Recognition, o NER). Todos estos pasos se pueden realizar utilizando herramientas existentes, como NLTK o el Stanford Tagger y NER, o se pueden definir y utilizar módulos propios.
Finalmente, en el módulo principal, IEPY realiza la extracción de relaciones (Relationship Extraction, o RE). Para ello, primero se encuentran todas las posibles evidencias de relaciones en los documentos. Luego, IEPY entra en el ciclo principal, en el que se requiere la intervención del usuario para responder preguntas acerca de las evidencias. Luego de cada ronda de preguntas, se entrenan clasificadores automáticos que permiten extraer nuevas relaciones y generar nuevas preguntas, hasta que el usuario decide terminar de responder.
[1] http://iepy.machinalis.com
[2] http://iepy.readthedocs.org/
[3] https://github.com/machinalis/iepy
por Franco Luque (FaMAF UNC)
La era digital ya está aquí hace más de una década. En los últimos diez años se produjo un crecimiento exponencial de la cantidad de datos visuales digitales (imágenes, videos, etc) gracias al desarrollo y abaratamiento de dispositivos de adquisición. Hoy en día, la mayoría de las personas posee un dispositivo de captura de imágenes (filmadoras, tablets, cámaras, celulares...). Sin imaginarlo, estos dispositivos pueden abrir infinidad de nuevas oportunidades. Cambio de paradigmas en el uso de dispositivos, automatización de procesos, simplificación de tareas, para mencionar algunas.
Todos estos avances requieren de nuevos desarrollos científicos en el área de procesamiento, modelado y análsis de imágenes. Estas tareas necesitan una amplia variedad de conocimientos interdisciplinarios, pero sin dudas, sus fundamentos son la mátemática, la lógica y la programación.
La charla incluye un paneo sobre los diferentes campos de aplicación del procesamiento de imágenes, una breve introducción a las áreas básicas del procesamiento digital de imágenes finalizando con los trabajos de investigación actuales que desarrolla el grupo de Aprendizaje Automatizado y Aplicaciones dentro del CIFASIS en el ámbito de las imágenes.
por Rafael Namías (CIFASIS - CONICET)
La web se ha convertido en el repositorio de objetos digitales mas grande que existe y al que acceden millones de usuarios diariamente con objetivos diversos: satisfacer su necesidades de información acerca de un tema, comunicarse con otras personas, entretenerse, realizar transacciones, entre otras. Su tamaño y la cantidad de documentos que contiene es gigantesca. En todos los casos, existe como común denominador la necesidad de realizar búsquedas de diferente tipo y con objetivos también diversos. De aquí que los motores o máquinas de búsqueda se han convertido en una aplicación "clave" para los usuarios. En la actualidad, son una de las aplicaciones más utilizadas sobre Internet, principalmente para poder tratar con el tamaño, complejidad y dinamismo de la red. Sin motores de búsqueda sería extremandamente complicado poder localizar información, menos aún en poco tiempo.
En esta exposición se presentarán los problemas que enfrentan los motores de búquedas para indexar y responder consultas, junto con su arquitectura y estado del arte de las soluciones utilizadas. El ambiente web propone desafíos a múltiples áreas de las ciencias de la computación lo que requiere "cierto" manejo de múltiples temas. Además, se describirán los cambios desde la recuperación de información tradicional a la recuperación de información en la web. A partir de la arquitectura básica de los motores de búsqueda se mostrarán los principales temas de investigación en diversas áreas (crawling, indexación, caching, paralelismo, resolución de consultas, ranking) y algunos problemas abiertos en los que se trabaja actualmente
por Gabriel Tolosa (UNLU)
Bitcoin es una cryptodivisa digital creada en el año 2009 que usa tecnología peer-to-peer y que opera sin una autoridad central, lo que significa que no está producida ni sancionada por bancos o gobiernos. La gestión de las transacciones y la emisión es llevada a cabo de forma colectiva por los nodos de la red. Bitcoin es de código abierto; su diseño es público, nadie es dueño o lo controla y todo el mundo puede participar.
En esta charla presentaré brevemente las funciones y algoritmos criptográficos que permiten el funcionamiento del complejo protocolo que soporta la red Bitcoin, explicando desde la generación de wallets hasta el funcionamiento de la cadena de bloques y las transacciones de red.
por Maximiliano Cañellas (Sinaptica)
Hoy en día los gobiernos están adoptando tecnologías de la Web 2.0 para interactuar con los ciudadanos, empoderándolos para compartir sus visiones, opiniones y puntos de vista. En particular, las redes sociales juegan un papel preponderante en este contexto, en función de su uso extendido. Para los gobiernos, un desafìo técnico significativo es la carencia de herramientas inteligentes automatizadas para procesar la opinión ciudadana en el contexto de redes sociales orientadas a cuestiones de gobierno. El Proyecto DECIDE 2.0 (financiado por LACCIR - Microsoft Research) apunta al desarrollo de un framework para integrar tecnologías de argumentación y de búsqueda sensible al contexto para procesamiento inteligente de opinión ciudadana en redes sociales. El framework se basa en técnicas de text mining y opinion mining para detectar los tópicos que tienen preponderancia, y las potenciales contradicciones que surgen entre los distintos puntos de vista. La principal contribución de DECIDE 2.0 es proveer una herramienta automática para extraer argumentos a partir de la opinión ciudadana, confrontando automáticamente opiniones "pro" y "con" a partir de términos. La idea es que dicha aplicación facilite el proceso de toma de decisiones para los funcionarios responsables en distintos niveles organizacionales.
Esta conferencia presentará algunos resultados del proyecto DECIDE 2.0 enfocados al procesamiento de datos obtenidos de Twitter. Se discutirán las ideas subyacentes a la generación automática de opiniones (argumentos) basados en tweets, asi como el análisis y generación de árboles de opinion. Se comentarán también propiedades matemáticas del enfoque presentado, y el estado del arte en otras investigaciones recientes en la temática.
por Carlos Chesñevar (UNS)
El proyecto llvm (Low Level Virtual Machine) y clang (frontend de C/C++/Objective C) ha alcanzado un nivel de madurez tal que hoy es el sistema de desarrollo base utilizado por Apple y otros. Actualmente se considera como la alternativa a GCC.
El proyecto enfoca en el desarrollo modular de componentes (en C++) para que fácilmente se puedan desarrollar herramientas utilizando diferentes componentes. En el caso del front-end clang, éste provee módulos para el desarrollo de aplicaciones basadas en la manipulación de código fuente.
En esta charla nos concentraremos particularmente en el clang-static-analyzer, el cual es un componente que permite implementar "checkers" para realizar verificaciones y "bug-finders" basados en un framework de ejecución simbólca.
Se describirán sus características, ejemplos de uso de algunos checkers disponibles y se mostrará el desarrollo de un checker simple que será incluido en la suite de compilación.
Referencias: http://clang-analyzer.llvm.org/
por Marcelo Arroyo (UNRC)
Proponemos un sistema de pruebas para lógica proposicional en el cual proposiciones isomorfas son consideradas como iguales (en el sentido de que sus respectivas pruebas son intercambiables).
Por ejemplo, A implica (B y C) es isomorfo a A implica B y A implica C. Si consideramos un sistema de pruebas módulo este tipo de isomorfismos, desde el punto de vista del cálculo (o del sistema de pruebas), una función que toma un argumento y devuelve un par, es equivalente (o "igual" si se quiere, para algún concepto de igualdad) a un par de funciones, cada una tomando el mismo argumento, y devolviendo sólo un elemento del par. Por lo tanto, también se podría, por ejemplo, proyectar un elemento de un par que será resultado de la aplicación de una función... antes de aplicar la función, proyectando sólo una parte de la misma. Esto puede trae aparejado una simplificación importante del cómputo.
En una lógica proposicional que sólo cuente con conjunción (no-idempotente) e implicación, existen sólo cuatro isomorfismos básicos, a partir de los cuales pueden derivarse los demás. Estos cuatro isomorfismos, al considerarlos igualdades, generan un cálculo interesante, no-determinista, relacionado con otros cálculos en la literatura.
por Alejandro Díaz-Caro (UNQ)
Los ataques basados en cache constituyen una clase de ataques encubiertos que son particularmente efectivos cuando son realizados en ambientes virtualizados o en la cloud, donde son utilizados para recuperar claves secretas en aplicaciones que involucran algoritmos criptográficos.
Un enfoque comúnmente utilizado para contrarrestar este tipo de ataques es utilizar implementaciones de estos algoritmos cuya ejecución es constant time. Sin embargo, no existe una prueba rigurosa y formal de que implementaciones constant-time están efectivamente protegidas contra ataques concurrentes basados en cache en un ambiente de virtualización donde máquinas virtuales huéspedes de la plataforma comparten la memoria cache de la misma. Más aún, muchas de las implementaciones usualmente utilizadas de estos algoritmos no son constant-time. Un enfoque alternativo es utilizar mecanismos a nivel de sistema; un mecanismo reciente de este tipo es el conocido como memoria stealth. Este mecanismo provee un espacio privado y reducido de memoria cache para que programas cuya ejecución podría dejar fugar información puedan computar en forma segura. El uso de memoria stealth induce una forma débil de constant/time, que nosotros convenimos en llamar S-constant-time, que puede ser aplicada a implementaciones extensivamente usadas de algoritmos criptográficos. Sin embargo, no existe un análisis riguroso de memoria stealth y S-constant-time así como tampoco existen herramientas que provean soporte para verificar que una implementación es S-constant-time.
En esta charla presentaremos un novel análisis de flujo de información que permite verificar si una aplicación x86 ejecuta en (S-)constant-time. Nosotros hemos probado que programas constant-time (respectivamente S-constant-time) no sufren de fuga de infomación a través de la memoria cache hacia otros sistemas operativos ejecutando concurrentemente sobre la plataforma de virtualización (respectivamente plataformas que implementan memoria stealth). Estos resultados han sido formalizados usando el asistente de pruebas Coq. Hemos demostrado la efectividad de nuestro análisis sobre implementaciones criptográficas, incluyendo las versiones PolarSSL de AES, DES y RC4, así como sobre SHA256 y Salsa20.
Un artículo donde se presenta en forma detallada el trabajo de investigación descrito y sus resultados ha sido aceptado par su presentación en CCS 2014: the 21st ACM Conference on Computer and Communications Security.
por Gustavo Betarte (Universidad de la República - Uruguay)
La diversidad de plataformas para la creación y distribución de aplicaciones móviles hace que los costos de desarrollo y mantenemiento sean elevados por la necesidad de conocimientos e infraestructuras específicas. HTML5 presenta una opción para crear aplicaciones que pueden ser ejecutadas en múltiples plataformas utilizando una sola base de código. En esta charla daremos una introducción a las aplicaciones híbridas y un recorrido por las principales características de Intel® XDK, un producto gratuito que provee un entorno para facilitar el ciclo de desarrollo y distribución de aplicaciones móviles y web HTML5 en múltiples sistemas operativos, form-factors y app stores.
por Sebastián Salvucci y Arzhan Kinzhalin (Intel)
Escribir programas correctos es difícil, de eso habla Computer Science. Escribir programas que funcionen correctamente en máquinas reales es un problema distinto, quizás más difícil aún, para el que desarrollamos técnicas en Software Engineering. En Site Reliability Engineering, el foco está en utilizar máquinas reales para construir clusters de cómputo y almacenamiento, así como mecanismos de comunicaciones, sincronización, monitoreo, distribución de carga, etc. que nos permitan brindar ciertas garantías de servicio. En esta charla exploraremos algunos de los mecanismos que Google emplea para proveer servicios a millones de usuarios en todo el mundo sin degradar su calidad de servicio.
Formulario de registro (Opcional)
por Federico Heinz (Google)
Charla a cargo del CEO de Neuralsoft
por Gustavo Viceconti (Neuralsoft)
Lugar: Club Atlético Olegario Víctor Andrade (CAOVA). San Martín 4989. (mapa)
↓ Hora Día → | Miércoles | Jueves | Viernes |
10:00 - 12:00 | Taller: Detectando corrupción de memoria con Ptrace en aplicaciones reales | ||
12:00 - 14:00 | Almuerzo | ||
14:00 - 14:45 | Métodos de navegación basada en visión para robots móviles | Inteligencia Artificial y Gobierno Electrónico | |
14:45 - 15:00 | Acto de apertura | ||
15:00 - 16:00 | Desarrollo de aplicaciones móviles multi-plataforma con Intel® XDK | IEPY: Una plataforma para Extracción de Información en Python | Análisis estático con clang-llvm |
16:00 - 17:00 | Innovación tecnológica en Neuralsoft | Coffee Break | |
17:00 - 18:00 | Coffee Break | Imaginando... | Lambda cálculo módulo isomorfismos de tipos |
18:00 - 19:00 | Ingeniería de Confiabilidad en Google | Recuperación de Información de Gran Escala | Certificación de algoritmos criptográficos constant-time |
19:00 - 20:00 | ¿Para qué estudiar Ciencias de la Computación? Muestra de trabajos prácticos |
Bitcoin en profundidad: Un viaje criptográfico | Entrega de diplomas |
20:00 - 20:30 | |||
22:45 - ∞ | Cena de camaradería |