• Inicio

    Se conoce como  automático de programas un conjunto de técnicas que permiten extraer información y/o propiedades directamente desde los programas. Los usos son muy variados entre los que se destacan la verificación de código  (descubrir bugs/probar su ausencia o el cumplimiento de contratos), transformación/síntesis (optimización de código, paralelización, generación de casos de tests), ingeniería reserva, análisis de requisitos no funcionales (complejidad, consumo de recursos), diferenciación de programas, entre otras aplicaciones.

    Existen muchas técnicas distintas para el análisis de programas. Algunas de ellas son introducidas en la materia AAP.  En este seminario (a diferencia de la materia AAP) vamos a enfocarnos en revisar algunos conceptos básicos para luego estudiar con detalle una técnica en particular. En este cuatrimestre posiblemente vayamos a estudiar algunos papers seminales y luego los más modernos que tratan la temática llamada "análisis de punteros" (points-to analysis), que es muy utilizada para el abordaje de lenguajes con punteros o referencias (ej: C/C++, Java, C#, Python, JavaScript, etc). 

    Cursada: La materia ocupa un  total de 4hs. semanales. Va a dar 2 puntos de optativa para la licenciatura y 3 puntos para doctorado. El mecanismo de aprobación es la presentación de varios papers más un examen final.
    No se necesita AAP, pero es recomendable haber cursado Paradigmas.

    Con respecto a los horarios, inicialmente se plantea el jueves de 14 a 17hs  mas una hora  de consultas en otro día a definir.  De todos modos se decidirán en función de las posibilidades de los interesados.
    El profesor de la materia es: Diego Garbervetsky -- http://lafhis.dc.uba.ar/~diegog
    Requisitos Lógica. Recomendamos también Paradigmas de Lenguajes de Programación y/o Teoría de Lenguajes pero no es excluyente.
    Programa Tentativo


    Introducción

    Qué es análisis de programas.

    • Análisis estático vs. Dinámico
    • Corrección y completitud
    • Análisis Dataflow
    • Analisis de Points-to
    Seminario
    • Algoritmos seminales de Aliassing / Points-to / Control Flow analysis
    • Técnicas destacadas
    • Ultimos avances