EMBEDDED AND MULTICORE SYSTEMS PROGRAMMING

Course objectives

General goals: The course is aimed at training students on fundamental algorithmic and programming techniques suited for modern multicore and embedded plaftorms. Specific goals: Knowledge and understanding: At the end of the course, students will have a deep understanding of the main programming issues posed by parallel systems, as well as of programming abstractions and techniques useful to write scalable code. Apply knowledge and understanding: Students will be able to design, program and implement embedded systems (single core/multi core) and will have an understanding of the OS used in such systems. Critical and judgmental skills: Students will be able to face the challenges arising in the design of embedded and multicore systems and in the implementation of efficient and scalable programs for such systems taking into account the characteristics of different computational plaftorms. Communication skills: The students will be able to communicate effectively, summarizing the main ideas in the design of software for embedded and multicore systems clearly and presenting accurate technical information. Ability of learning: The goal for the class is to introduce the basic principles behind the design of software for embedded and multicore systems, making it possible for the students to extend their knowledge independently according to technological changes and evolution.

Channel 1
DANIELE DE SENSI Lecturers' profile

Program - Frequency - Exams

Course program
1. Introduction to parallel programming 2. Parallel hardware and software 3. Distributed memory programming with MPI 4. Shared memory programming with Pthreads 5. Shared memory programming with OpenMP 6. GPGPU programming with CUDA 7. Examples of parallel and distributed algorithms and their implementations
Prerequisites
- Basic knowledge of the C language - Basic computer architecture knowledge
Books
Peter Pacheco, "An Introduction to Parallel Programming", Morgan Kaufmann. David B.Kirk, Wen-mei W.Hwu, "Programming Massively Parallel Processors. A Hands-on Approach" Second Edition, Morgan Kaufmann Barlas, "Multicore and GPU Programming"
Frequency
It is not mandatory to attend classes, but it is strongly recommended.
Exam mode
The exam involves the development of a project (e.g., implementation of an application on multi-GPU systems, using methods and technologies seen in the lectures), and of a subsequent oral exam involving the project discussion, and questions on any topic seen in class.
Lesson mode
The course adopts a mixed teaching model (theory and practice). Lectures are used, integrated with a component of practical exercises and laboratory activities dedicated to the implementation and optimization of parallel code on multicore and GPU platforms (e.g., CUDA/OpenMP). The alternation between theory (architectural principles and programming models) and laboratory work (development and benchmarking) is aimed at ensuring the acquisition of Knowledge and the Application capacity of parallel programming concepts.
DANIELE DE SENSI Lecturers' profile

Program - Frequency - Exams

Course program
1. Introduction to parallel programming 2. Parallel hardware and software 3. Distributed memory programming with MPI 4. Shared memory programming with Pthreads 5. Shared memory programming with OpenMP 6. GPGPU programming with CUDA 7. Examples of parallel and distributed algorithms and their implementations
Prerequisites
- Basic knowledge of the C language - Basic computer architecture knowledge
Books
Peter Pacheco, "An Introduction to Parallel Programming", Morgan Kaufmann. David B.Kirk, Wen-mei W.Hwu, "Programming Massively Parallel Processors. A Hands-on Approach" Second Edition, Morgan Kaufmann Barlas, "Multicore and GPU Programming"
Frequency
It is not mandatory to attend classes, but it is strongly recommended.
Exam mode
The exam involves the development of a project (e.g., implementation of an application on multi-GPU systems, using methods and technologies seen in the lectures), and of a subsequent oral exam involving the project discussion, and questions on any topic seen in class.
Lesson mode
The course adopts a mixed teaching model (theory and practice). Lectures are used, integrated with a component of practical exercises and laboratory activities dedicated to the implementation and optimization of parallel code on multicore and GPU platforms (e.g., CUDA/OpenMP). The alternation between theory (architectural principles and programming models) and laboratory work (development and benchmarking) is aimed at ensuring the acquisition of Knowledge and the Application capacity of parallel programming concepts.
  • Lesson code10593235
  • Academic year2025/2026
  • CourseComputer Science
  • CurriculumMetodologico
  • Year3rd year
  • Semester1st semester
  • SSDINF/01
  • CFU6