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. Se estudiarán entre otros la tipificación fuerte y dinámica, polimorfismo, continuaciones, excepciones, subtipos, sobrecarga de operadores y fundamentos de objetos. Las teoría 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. Diversos aspectos del curso se pondrán en práctica mediante Haskell, un lenguaje funcional puro y perezoso.
La página del curso esta aquí