Search for contacts, projects,
courses and publications

Languages & Compilers


Nystrom N.

Course director

Schiavio F.



Programming languages allow us to express our intentions to computers and to each other. This course teaches you how to analyze programming languages, focusing on semantics, the meaning of programs in languages. To understand the semantics of a programming language, we take an engineering approach, building interpreters and compilers for the language. We use this approach to understand a variety of constructs in functional and object-oriented languages and to understand how these constructs interact with each other in real-world languages.



  • "Compilers: Principles, Techniques, and Tools", 2nd edition, Alfred Aho, Monica Lam, Ravi Sethi, and Jeffrey Ullman, 2006.
  • "Real World Haskell", Bryan O'Sullivan, Don Stewart, and John Goerzen, 2008.
  • "Thinking Functionally with Haskell", Richard Bird, 2015