Parallel and Distributed Computing
Semester Credit Hours Prerequisite
[BSCS-8] [3+0] [CSOS-347]
Course Code: CSPD-407
Course Description
The goal of this course is to introduce students to the principles and paradigm of parallel and distributed
systems, algorithm and applications.
Course Learning Outcomes (CLOs)
The course learning outcome along with domain and BT level are listed below
S. # CLO STATEMENT DOMAIN BT LEVEL PLO
Learn about the different parallel C2
CLO-1 architecture, profiling and parallelization of C 2
code Comprehension
Analytical modeling and performance of C4
CLO-2 C 4
parallel programs Analysis
Analyze complex problems with shared C3
CLO-3 C 3
memory programming with OpenMP Application
* BT= Bloom’s Taxonomy, C=Cognitive Domain, P=Psychomotor Domain, A= Affective
Domain
Course Materials
This course introduces the following topics to students:
Introduction to parallel and distributed systems, tools, languages, architectural support
from the application side
Analysis and profiling of applications
Shared memory concepts like Threads and OpenMP,
Distributed memory point to point collectives, Parallel and Distributed Programming
Paradigms
Parallel and Distributed Algorithms
Applications of Parallel and Distributed Computing, Multi-core, Client-server, GPU
Heterogeneous Computing
Advanced topics in Parallel & Distributed System
Course Weekly Schedule
The course schedule for 16 weeks is detailed below
Week Topic
1 Introduction to parallel and distributed computing, Flynn’s Classical Taxonomy and
general parallelism terminologies
2 Platforms for parallel programming and types of parallelism, Amdahl’s Law and
profiling
3 Parallel Memory Architectures, Parallel programming models
4 Dependence Analysis
5 Designing parallel programs
6 Inter-process Communication, Message Passing System
7 Introduction to Multithreading, C++ Threads and Design Patterns
8 Shared Memory Parallel Programming: OpenMP,
9 Programming with OpenMP
10 Distributed memory parallel programming, Heterogeneous distributed systems
11 Message Passing Interface (MPI)
12 GPU based Computing, Introduction to CUDA
13 Concurrency Control
14 Fault Tolerance
15 Asynchronous/synchronous computation/communication
16 Advanced topics in parallel and Distributed computing
Recommended Textbooks
1. Principles of Parallel Programming, Lin, C. & Snyder, C., 1st Edition (2008), Addison-
Wesley
2. Distributed Systems: Concepts and Design, Coulouris, G., Dollimore, J. & Kindberg, T.,
5th Edition, Addison-Wesley.
3. Parallel programming: For multicore and cluster systems. Rauber, Thomas, and Gudula
Rünger. Springer Science & Business Media, 2013.