Foundations of Programming Languages
Keywords |
Classification |
Keyword |
OFICIAL |
Computer Science |
Instance: 2024/2025 - 1S 
Cycles of Study/Courses
Teaching Staff - Responsibilities
Teaching language
Suitable for English-speaking students
Objectives
Study of formal semantic models for programming languages, in order to understand the mechanisms envolved in the their definition, design, and implementation.
Learning outcomes and competences
The students will acquire knowledge on formal semantic models for programming languages.
They will develop technical capabilities and understand the mechanisms envolved in the definition, design, and implementation of programming languages.
With the acquired knowledge, the students will be able to formalize the concept of the meaning of a program.
In addition, the students will be able to apply these concepts to the design of a programming language.
Working method
Presencial
Program
- Lambda-calculus: syntax, reductions, codifitcation of typical constructors in programming languages.
- Type systems: simple a la Curry type system for lambda-calculus; parametric polymorphism. Type Inference.
- Operational semantics. Demonstration techniques for properties of operational semantics.
- Domain theory: Complete partial orders (CPOs). Continuous functions. FIxed point theorem.
- Denotational semantics for programming languages.
- Relation between operational and denotational semantics.
- Semantics for languages with non-determinism, parallelism, and blocks.
- Extra notions of semantics for programming languages.
Mandatory literature
Hanne Riis Nielson;
Semantics with applications. ISBN: 978-1-84628-691-9
Chris Hankin;
An introduction to Lambda calculi for computer scientists. ISBN: 0-9543006-5-3
Complementary Bibliography
Glynn Winskel;
The formal semantics of programming languages. ISBN: 978-0-262-23169-5
Hendrik Pieter Barendregt;
The lambda calculus. ISBN: 0-444-85490-8
Maribel Fernández;
Programming languages and operational semantics. ISBN: 0-9543006-3-7
Teaching methods and learning activities
Theoretical-practical classes with concept definitions and exercise resolution.
Software
Glasgow Haskell Compiler
keywords
Physical sciences > Mathematics > Mathematical logic
Physical sciences > Mathematics > Discrete mathematics
Physical sciences > Computer science
Evaluation Type
Distributed evaluation without final exam
Assessment Components
designation |
Weight (%) |
Teste |
100,00 |
Total: |
100,00 |
Amount of time allocated to each course unit
designation |
Time (hours) |
Estudo autónomo |
120,00 |
Frequência das aulas |
42,00 |
Total: |
162,00 |
Eligibility for exams
No frequency criteria.
Calculation formula of final grade
There are two tests in the cours, each with a minimum grade of 6 out of 20.
The final grade is the arithmetic average of the grades for both tests.
Final grade = 0.5 * Test 1 + 0.5 * Test 2
Whoever does not achieve a minimum grade in either of the tests is not approved, but will be able to attend a resit exam to both tests, or just one.