Es importante que se tengan conocimientos de programación ya que es un curso completamente práctico.
Los lenguajes a usar pueden ser Smalltalk, Java, C#, Python, Ruby, JavaScript y PHP.
Los requerimientos de máquina es que tengan el lenguaje instalado con el IDE y el framework xUnit correspondiente.
Contenido del CursoEl objetivo de este curso es transmitirte la técnica de desarrollo ágil denominada Test Driven Development (TDD), utilizando para ello ejemplos prácticos y cotidianos. El curso parte de una breve introducción teórica para luego concentrarse en ejercicios prácticos especialmente preparados para que aprendas la técnica, puesto que creemos que 'la mejor manera de aprender es haciendo'.
Si bien es recomendable que los asistentes estén familiarizados con conceptos básicos de teoría de la probabilidad y lenguajes de programación, el curso repasará todas las nociones necesaria para su desarrollo, siendo autocontenido y accesible a cualquier estudiante de la disciplina. .
Contenido del CursoEn los últimos años los lenguajes de programación probabilística (PPLs) han recibido una enorme atención, tanto desde la academia como desde la industria. En gran medida, esto se debe a la manera en la que han revolucionado los métodos de la inteligencia artificial. Por ejemplo, los PPLs actuales pueden hacer en 50 líneas lo que antes llevaba más de 1000.
El objetivo de este curso es introducir a sus asistentes al "mundo" de los PPLs, de una manera amplia, cubriendo tanto aspectos prácticos como de fundamentos. Comenzaremos estudiando los beneficios y posibilidades de los modelos de cómputo probabilísticos, recorriendo sus principales aplicaciones, y poniendo especial énfasis en el motor de esta revolución: la inteligencia artificial y el razonamiento Bayesiano. En la segunda parte del curso estudiaremos los principales desafíos en el diseño e implementación de los PPLs. Por último cubriremos la semántica formal y distintas técnicas de verificación de programas probabilísticos.
Conocimientos básicos de matemática discreta y de lógica booleana
Lógica proposicional: definiciones y limitaciones.
Lógica de predicados: definiciones y limitaciones.
Lógica relacional.
Especificación de programas: precondición más débil, corrección parcial y corrección total de programas.
Java Modeling Language: un lenguaje para la especificación de programas.
Detección automática de fallas en programas.
Reparación automática de fallas en programas.