El establecer el significado de las frases de un lenguaje de programación es un problema de múltiples aristas en tanto puede tener variados objetivos, que van desde la necesidad de comprensión humana, hasta el imperativo de que una máquina los pueda interpretar o traducir a una secuencia de instrucciones ejecutables. Un manual de usuario, una sofisticada estrategia de compilación, o alguna herramienta teórica destinada a desentrañar los principios básicos de su diseño, constituyen todas vertientes de significado que responden a distintos intereses y usos de los lenguajes de programación. En las últimas décadas variados desarrollos matemáticos y lógicos dieron forma a una teoría que se posicionó en un lugar privilegiado para el acceso a la comprensión profunda del significado de un lenguaje. La misma permite conectar la descripción intuitiva de un sentido finito y dinámico (un manual), con una modalidad estática del significado, vigente en la lógica formal y la matemática (denotación). A partir del desarrollo de la Teoría de Dominios la semántica denotacional adquiere un relevancia especial, no sólo por tratarse de objetos matemáticos perfectamente definidos en el contexto de una teoría particular, sino además porque comienza a ser utilizada como "la definición" del lenguaje y luego, si se proponen otras semánticas (operacional, axiomática), se las demuestra correctas con respecto a dicha definición.
El objetivo general de la asignatura es lograr que los estudiantes se apropien de las herramientas más importantes que actualmente se utilizan para dar significado a las frases de un lenguaje de programación, poniendo énfasis en la utilidad de estas herramientas para comprender los principios básicos que subyacen en su diseño.
Dentro de los objetivos específicos, mencionamos como relevantes:
• tomar contacto con un lenguaje teórico basado en el Standard ML, en tanto lenguaje que ha sido definido formalmente de manera completa, y cuyos principios básicos coinciden con los lenguajes más populares
• el acceder al uso de herramientas matemáticas apropiadas
• disponer de recursos para evaluar las características principales de los distintos lenguajes actualmente en uso
• reconocer propiedades deseables en lenguajes de programación y las herramientas para garantizarlas
• proveer de recursos para que el estudiante pueda diseñar e implementar lenguajes de programación