Abstracts
Introducción a los conjuntos fractales

[Universidad Nacional del Sur]

Desde su irrupción a fines de la década de 1970, los conjuntos fractales constituyen un tema de creciente interés científico en matemática, física, computación, y en la mayoría de las ciencias aplicadas. Su gran difusión y aplicabilidad interdisciplinaria se debe a varias razones, entre las cuales podemos contar su universalidad como fenómeno natural, sus interesantes propiedades matemáticas, su relativamente sencillo tratamiento computacional, y la sugestiva belleza de sus representaciones gráficas. La geometría fractal se convirtió rápidamente en un lenguaje adecuado para describir las complejas formas naturales, en contraposición con la geometría Euclídea, más amena para las idealizaciones matemáticas. Al mismo tiempo, su descripción matemática se basa en la formulación iterativa o recursiva, en vez de la definición axiomática característica de los objetos matemáticos tradicionales. Estos dos factores hacen de los objetos fractales un recurso sobresaliente a la hora de simular fenómenos naturales de todo tipo.
El objetivo de esta charla consiste en presentar una introducción a los fundamentos matemáticos y algorítmicos de los conjuntos fractales, y algunas de las aplicaciones más importantes de estos conjuntos en la simulación de fenómenos naturales, la computación gráfica y el procesamiento digital de imágenes.
Temario:
Simetría a escala y la medición de objetos complejos. Fractales clásicos y definiciones topológicas. Conjuntos de Cantor, von Koch y Peano. Dimensión no entera. Dimensión fractal de conjuntos matemáticos y de fenómenos naturales. Caos determinístico y fractales. Conjuntos de Julia. La universalidad del caos. Conjunto de Mandelbrot. Algunos formalismos relacionados: autómatas celulares y gramáticas L. Fractales no determinísticos. Métodos espaciales y frecuenciales para la determinación de fractales no determinísticos. Sistemas de función iterada (IFS). Descripción de imágenes por simetría a escala. Teoremas de punto fijo y el teorema del collage. Aplicaciones de los IFS en Computación Gráfica. Síntesis de fenómenos naturales. Procesamiento y compresión fractal de imágenes.

Writing a kernel from scratch



In JCC 2008 we have written both a virtual machine launcher and a small, dummy kernel to run inside it. This approach serves to learn about low level programming and processor manipulation. However, the end result is not a real OS kernel suitable to boot on a real PC, but it only works inside the virtual machine created by us. This year, we will develop a real OS kernel from scratch, following the guidelines of the Carnegie Mellon 410 course on Operating Systems but with slight modifications to avoid the need to use a Simics simulator. The end result should be a real OS kernel image capable of booting our PC from persistent media like i.e. a floppy disk or hard disk.

Criptografía y verificación de programas probabilísticos

[INRIA Sophia Antipolis - Méditerranée y MSR-INRIA Joint Centre]

Demostrar la seguridad de un sistema criptográfico es en general una tarea compleja que requiere razonar sobre campos tan diversos como probabilidad, complejidad computacional y álgebra. No son raros los casos de pruebas que se han considerado correctas por años hasta que alguien puso en evidencia errores de razonamiento. Por esta razón, y para facilitar la verificación de pruebas de seguridad, la comunidad criptográfica ha adoptado una manera unificada de estructurar las pruebas como secuencias de "juegos": experimentos probabilísticos en presencia de un atacante desconocido pero con poder computacional limitado. Construir una prueba basada en juegos es un proceso creativo que no puede automatizarse en su totalidad. Por otro lado, verificar una prueba basada en juegos, tal como se la presenta en la mayoría de las publicaciones, requiere de un esfuerzo considerable. En esta charla veremos como usando técnicas de verificación formal de programas, podemos obtener pruebas de seguridad basadas en juegos que son correctas por construcción y cuya verificación puede automatizarse completamente. La esencia de nuestra propuesta es representar los experimentos definidos por juegos como programas en un lenguaje de programación probabilístico con una semántica formal. Veremos como muchos de los razonamientos que aparecen en pruebas de seguridad en criptografía se reducen a la demostración de propiedades sobre un programa o de relaciones entre pares de programas. Veremos, además, como muchos pasos en una prueba pueden mecanizarse usando un asistente de prueba (Coq) y técnicas de optimización de programas comúnmente usadas en compiladores (e.g. dead code elimination, constant folding, inline expansion, copy propagation, code reordering).

Breve Introducción al Procesamiento del Habla

[Universidad de Buenos Aires]

Debido a su gran complejidad, los lenguajes naturales (castellano, japonés, guaraní, etc.) presentan serias dificultades para la creación de sistemas capaces de manipularlos automáticamente. En particular, el procesamiento del habla --disciplina relativamente joven-- todavía acumula más cuentas pendientes que logros concretos. Sin embargo, en años recientes han comenzado a aparecer aplicaciones con resultados aceptables en dominios acotados, fruto de décadas de investigación, y buen incentivo para continuar trabajando. En esta charla describiré algunos temas centrales del área, incluyendo el reconocimiento automático del habla, la síntesis del habla y el modelado de la prosodia (entonación, ritmo, etc.).

Virtualización: Arquitectura, práctica y ataques.

[Core Labs]

Virtualización es uno de los grupos de tecnologias más en boga de los últimos tiempos. Abstraer los recursos de una computadora para simular otras no es una tarea sencilla a priori y presenta una serie de desafios técnico mas que importantes. Durante esta charla se buscan introducir los conceptos fundamentales para entender estas tecnologías, para luego analizarlas desde el punto de vista de la seguridad informática haciendo incapie en el punto de vista del atacante.

Una extensión de shortcut fusion con múltiples aplicaciones.

[Universidad de la República]

En programación funcional, los programas consisten de un conjunto de definiciones de funciones que reciben ciertas estructuras de datos como entrada y retornan otras como salida. Dichas funciones se suelen construir como la composición de funciones relativamente simples y sencillas de escribir. Los programas así definidos tienden a ser más modulares, pero su eficiencia puede verse afectada en forma significativa por el uso sistemático de la composición de funciones. Cada composición implica la construcción de una estructura de datos intermedia cuyos valores deben ser alojados en memoria, recorridos y finalmente descartados, requiriendo por lo tanto tiempo adicional de procesamiento, espacio de memoria para alojar nodos de la estructura y frecuentes llamadas al "garbage collector".
Existen técnicas de transformación de programas cuyo objetivo es la eliminación de aquellas estructuras intermedias que no jueguen un rol esencial en la computación. Esto es, se desea transformar el código original a uno equivalente en donde se intenta sustituir las composiciones de funciones por definiciones que combinan de forma adecuada los códigos de las funciones involucradas. A estas técnicas de transformación de programas se las conoce como fusión o deforestación.
En esta charla hablaremos de una técnica de fusión, conocida como "shortcut fusion", y presentaremos una extensión a la misma, mostrando sus aplicaciones. En particular, gracias a esta extensión ha sido posible definir la fusión de programas con efectos colaterales (programas monádicos) y la derivación de programas circulares (tanto puramente funcionales como con efectos).

Verificación de propiedades de seguridad con análisis estático liviano

[Universidad Nacional de Río Cuarto]

Las aplicaciones actuales tienen requisitos no funcionales como tolerancia a ataques, robustez de uso y mantener confidencialidad de datos. Los sistemas tienen miles de líneas de código y la inspección manual de código se hace prácticamente imposible. El testing es muy dificultoso de diseñar e implementar para descubrir problemas de seguridad. Los métodos de verficación formales no escalan para manejar grandes volúmenes de código. Las técnicas de análisis estático liviano permiten descubrir indicios de problemas haciendo análisis de código fuente. Estas técnicas escalan bien aunque generalmente son conservativas, es decir que pueden producir alertas falsas (falsos positivos). Se analizará su ambiente de aplicación, tipos de errores que pueden encontrarse, algunas herramientas disponibles y las técnicas utilizadas.

Implementación del modelo HPC colaborativo aplicable a problemas de bio-informática

[Universidad Católica de Córdoba - Intel]

En esta presentación se mostrará un modelo colaborativo para cómputos de altas prestaciones (HPC) que permite distribuir programas de naturaleza recursiva. Cuando se trabaja con programas diseñados para brindar soluciones que requieren de procesamiento masivo de datos, se hace evidente la necesidad de contar con equipo especialmente preparado para este tipo de problemas. El enfoque tomado en nuestro proyecto es la utilización de un cluster de computadoras para cómputos de altas prestaciones, utilizando las herramientas de software de Intel. Con esta tecnología se obtienen las ventajas de tener un sistema con bajo costo, escalabilidad al poder insertar fácilmente nuevos nodos y, fundamentalmente, reducción del tiempo de procesamiento por la distribución de tareas.

Métodos Formales para el Análisis de Software

[Universidad Nacional de Córdoba]

Los métodos formales, cuya aplicación se limitó durante algún tiempo a porciones de sistemas críticos de software/hardware, han ganado popularidad y sus campos de aplicación se han ampliado. En este éxito de los métodos formales, la disponibilidad de herramientas de apoyo, y en particular herramientas para la aplicación de diferentes tareas de análisis, ha jugado un rol importante. En esta charla daremos una breve descripción de varios métodos formales para el análisis de software, poniendo énfasis en el uso de herramientas. Los métodos formales discutidos incluirán métodos formales deductivos, cuyas herramientas son en general asistidas, y métodos formales que ofrecen mecanismos algorítmicos de análisis, como es el caso del modelchecking.