El objetivo del curso es estudiar diversos conceptos subyacentes al diseño, definición, implementación y uso de los lenguajes de programación modernos así como técnicas formales para el estudio de algunos de los principales paradigmas de programación: funcional, imperativo y orientado a objetos. Los sistemas de tipos y las semánticas operacionales proporcionarán una herramienta matemática formal que permitirá investigar propiedades de un gran número de lenguajes de programación. La teoría se complementa mediante prácticas de programación en el lenguaje funcional Haskell, que ilustran el uso e implementación de los distintos paradigmas.
Prerrequisitos: 0415 Análisis Lógico, 0576 Teoría de la Computación.