Critical Computing Systems Engineering
ADVANCED PROGRAMMING PARADIGMS
Description
Theory
2
Laboratory
3
Instructors
Luís Miguel Pinho
Contents
PO1. Concurrent and Parallel Programming in Shared Memory Systems
PO2. Parallel Programming with OpenMP
PO3. Fine-grained Parallel Programming
PO4. Functional Programming in the Rust Language
PO5. Concurrency and Parallelism in Rust
PO6. Real-Time Parallel Programming
Learning Outcomes
It is intended that students learn how to analyse and understand advanced systems for managing concurrent computing tasks, exploit parallel execution, analyse and develop correct concurrent and parallel applications, and acquire knowledge on advanced platforms and technologies.
The specific objectives of the unit emanate from the intended outcomes and knowledge in the context of the critical computing systems domain, mapping from the general objective above to a set of three specific objectives:
CO1. Programming paradigms and languages for critical systems: provide students with the requirements and specific challenges which are placed in programming paradigms and languages to develop cyber-physical systems for critical applications.
CO2. Functional programming: present the functional programming paradigm as an enabling technology for programming concurrent and parallel code free of side effects, reducing the complexity of programming and increasing its reliability.
CO3. Parallel and concurrent programming: provide to students the required strategies, methodologies and tools to develop concurrent and parallel algorithms and applications, with both imperative and functional programming models.