Master in Software and Systems

Foundations for Programming Languages

Lecturer (Coordinator):
Julio Mariño
jmarino@fi.upm.es
Lecturer:
Manuel Carro
mcarro@fi.upm.es
Lecturer:
Aleksandar Nanevski
aleks.nanevski@imdea.org

Semester

First semester

Credits

4 ECTS

Outline

This subject provides the formal background needed to reason about software and programming languages in a precise and mathematically sound way.

It covers the fundamental concepts underlying programming language design, definition and execution mechanisms, including recursion, syntax, various forms of semantics, and type systems.

Apart from the theoretical contents, this subject may include short programming assignments for students to gain a more instrumental level of the ideas mentioned above.

Syllabus

  1. Introduction
    1. Overview, motivation, and challenges for software technologies
    2. Background review: programming, logic, mathematical structures...
  2. Syntax
    1. Abstract and concrete syntax definitions
    2. Recursion and induction
  3. Lambda calculi
    1. Untyped lambda calculus
    2. Simply-typed lambda calculus
  4. Semantics
    1. Operational semantics
    2. Denotational semantics
  5. Type systems
    1. Natural deduction
    2. The Curry-Howard isomorphism
    3. Polymorphism
    4. Algebraic/recursive types
    5. Reference types; Monads; Effects
    6. Subtyping

Recommended Reading

Website

http://www.software.imdea.org/graduateschool

Prerequisites

Assessment Method

The final grade will be calculated from:

All the exercises for each unit will account for the same relative weight in the overall grade, although individual exercises in a given unit may have different weights.

Tuition Language

English

Subject-Specific Competences

More information:

This table shows the code, description and proficiency level for each subject-specific competence

Code Competence Proficiency Level
SSC3 Application of relevant research methods to open problems in the field of software engineering related to both the particular features of software and software development management S

Learning Outcomes

More information:

This table shows the code, description and proficiency level for each subject learning outcome

Code Learning Outcome Associated competences Proficiency level
RA-IS-4 Analyse groundbreaking research aimed at remedying the weaknesses in project requirements and design activities carried out using non-classical methodologies SSC3 S

Learning Guide

Subject learning guide for Foundations and Programming Languages