CEN 330 — PARALLEL PROGRAMMING | Brussels College
Course Syllabus

PARALLEL PROGRAMMING

CEN 330 — Computer Engineering
Code
CEN 330
Type
C
ECTS
6
Category
Elective
Course Description

The course presents both the hardware and software aspects of parallel programming. Related to the hardware aspect, the course covers the fundamental architecture models of the Flynn taxonomy and the data organization principles for each category. Related to the software aspect, the course firstly provides the general principles of parallel algorithm design. Afterwards, in a more specific way, the course describes how to design and implement programs in a shared-memory programming model using POSIX threads, OpenMP and Java multi-threading. Also the course describes how to design and implement programs in a distributed-memory programming model using MPI. Finally some advanced applications of parallel programming are studied, including the n body problem, sorting and graph problems.

Course Objectives

Course aims is to teach students the principles, models, and techniques of parallel programming, enabling them to design, implement, and analyze efficient parallel programs on shared- and distributed-memory systems.

Key Concepts
  1. Concurrency vs Parallelism
  2. Task vs Data Parallelism
  3. Synchronization and Mutual Exclusion
  4. Racing Condition Control
  5. Amdahl’s Law
  6. Taxonomy and Memory Types
  7. Message Passing Models
  8. Computer Architecture Taxonomy (Flynn)
14-Week Outline
WeekTopic
1Course Overview and Evaluation Criteria
2Introduction to Parallel Systems and Types of Parallelism
3Fundamentals of Parallel Hardware and Parallel Software
4Parallel Architectures and Memory Models
5Parallel Programming Models and Concepts
6Parallel Algorithms and Collective Communication
7Midterm
8Introduction to Shared-Memory Programming and Pthreads
9Synchronization in Shared-Memory Systems
10Shared-Memory Programming with OpenMP - Loop Parallelism
11Shared-Memory Programming with OpenMP - Task Parallelism
12Introduction to Distributed-Memory Programming with MPI
13Advanced MPI Programming and Performance Considerations
14Applications of Parallel Programming – The N-Body Problem
Learning Outcomes
  1. Understand and explain the difference between concurrency and parallelism and identify types of parallelism.
  2. Implement mutexes, critical sections, and barriers to avoid race conditions in parallel programs.
  3. Compare shared, distributed, and hybrid memory systems, and select appropriate message passing strategies for a given problem.
  4. Identify computer architectures using Flynn’s Taxonomy (SISD, SIMD, MIMD) and explain their suitability for parallel applications.
  5. Implement and develop parallel versions of standard algorithms (sorting, matrix multiplication, reductions) and evaluate their efficiency.
  6. Undestand and develop simple programs using shared memory (OpenMP) and message passing (MPI) paradigms.
Assessment Methods
Method% EachQuantity
Midterm Exam(s)301
Project201
Laboratory201
Final Exam301
Recommended Textbooks

Primary textbook: "Introduction to Parallel Programming book" by Peter Pacheco. Additinal textbook: "Introduction to Parallel Computing" by A.Grama, A.Gupta, G.Karypis, V.Kumar

Scroll