Foundations for Programming Languages

A course of the FCT UNL PhD Program in Computer Science

Accreditation for the Carnegie Mellon | Portugal Dual Degree in Computer Science.

Summary

Programming languages are among the most important and well-developed artifacts of computer science. The study of programming languages has always been a very active field with many applications - to software engineering, compiler technology, security, and concurrency. Even today, new programming language abstractions are being proposed, together with associated analysis techniques. The study of type theory and its application in programming language design plays a key role in the course.

The course has two parts. Firstly, students will learn techniques to formally define the semantics of programming languages, and to enforce and reason about safety properties of programs by means of type systems (functional, imperative, and concurrent languages will be covered). Secondly, students will learn about several state-of-the-art applications of programming language techniques, with a focus on language-based program certification and language-based security. This course should be regarded as a necessary requirement for any student interested in pursuing programming language research.

Course Information (2009-10)

Lectures: Friday 11-13h.

Tutorials: Wednesday 10-12h.

Instructors: Luís Caires [João Seco, Carla Ferreira].

Lectures

Homework

There is a document listing the homework exercises (updated 4 Dec). At some point, we will also propose a programming assignment (Ocaml and Twelf).

Bibliography

Text books (we will use parts)

Additional reading and resources