COURSE INFORMATION
Course Title: PARALLEL PROGRAMMING
Code Course Type Regular Semester Theory Practice Lab Credits ECTS
CEN 330 C 6 2 2 0 3 6
Academic staff member responsible for the design of the course syllabus (name, surname, academic title/scientific degree, email address and signature) Dr. Erind Bedalli ebedalli@epoka.edu.al
Main Course Lecturer (name, surname, academic title/scientific degree, email address and signature) and Office Hours: M.Sc. Shkumbin Fida shfida@epoka.edu.al , Monday 10:00 - 10:30, Tuesday 10:00 - 10:30.
Second Course Lecturer(s) (name, surname, academic title/scientific degree, email address and signature) and Office Hours: M.Sc. Olsi Shehu oshehu@epoka.edu.al
Language: English
Compulsory/Elective: Elective
Study program: (the study for which this course is offered) Bachelor in Software Engineering (3 years)
Classroom and Meeting Time: A-030
Teaching Assistant(s) and Office Hours: NA
Code of Ethics: Code of Ethics of EPOKA University
Regulation of EPOKA University "On Student Discipline"
Attendance Requirement: Lectures: 65%, Labs: 75%
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.
BASIC CONCEPTS OF THE COURSE
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)
COURSE OUTLINE
Week Topics
1 Course Overview and Evaluation Criteria
2 Introduction to Parallel Systems and Types of Parallelism
3 Fundamentals of Parallel Hardware and Parallel Software
4 Parallel Architectures and Memory Models
5 Parallel Programming Models and Concepts
6 Parallel Algorithms and Collective Communication
7 Midterm
8 Introduction to Shared-Memory Programming and Pthreads
9 Synchronization in Shared-Memory Systems
10 Shared-Memory Programming with OpenMP - Loop Parallelism
11 Shared-Memory Programming with OpenMP - Task Parallelism
12 Introduction to Distributed-Memory Programming with MPI
13 Advanced MPI Programming and Performance Considerations
14 Applications of Parallel Programming – The N-Body Problem
Prerequisite(s): Students should have basic knowledge of object-oriented programming in languages such as C/C++, Java, or Python.
Textbook(s): 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
Additional Literature:
Laboratory Work: Mandatory
Computer Usage: Mandatory
Others: No
COURSE 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.
COURSE CONTRIBUTION TO... PROGRAM COMPETENCIES
(Blank : no contribution, 1: least contribution ... 5: highest contribution)
No Program Competencies Cont.
Bachelor in Software Engineering (3 years) Program
1 Engineering graduates with sufficient theoretical and practical background for a successful profession and with application skills of fundamental scientific knowledge in the engineering practice. 5
2 Engineering graduates with skills and professional background in describing, formulating, modeling and analyzing the engineering problem, with a consideration for appropriate analytical solutions in all necessary situations 5
3 Engineering graduates with the necessary technical, academic and practical knowledge and application confidence in the design and assessment of machines or mechanical systems or industrial processes with considerations of productivity, feasibility and environmental and social aspects. 5
4 Engineering graduates with the practice of selecting and using appropriate technical and engineering tools in engineering problems, and ability of effective usage of information science technologies. 4
5 Ability of designing and conducting experiments, conduction data acquisition and analysis and making conclusions. 5
6 Ability of identifying the potential resources for information or knowledge regarding a given engineering issue. 5
7 The abilities and performance to participate multi-disciplinary groups together with the effective oral and official communication skills and personal confidence. 5
8 Ability for effective oral and official communication skills in foreign language. 5
9 Engineering graduates with motivation to life-long learning and having known significance of continuous education beyond undergraduate studies for science and technology. 3
10 Engineering graduates with well-structured responsibilities in profession and ethics. 3
11 Engineering graduates who are aware of the importance of safety and healthiness in the project management, workshop environment as well as related legal issues. 2
12 Consciousness for the results and effects of engineering solutions on the society and universe, awareness for the developmental considerations with contemporary problems of humanity. 2
COURSE EVALUATION METHOD
Method Quantity Percentage
Midterm Exam(s)
1
30
Project
1
20
Laboratory
1
20
Final Exam
1
30
Total Percent: 100%
ECTS (ALLOCATED BASED ON STUDENT WORKLOAD)
Activities Quantity Duration(Hours) Total Workload(Hours)
Course Duration (Including the exam week: 16x Total course hours) 16 4 64
Hours for off-the-classroom study (Pre-study, practice) 16 1 16
Mid-terms 1 11 11
Assignments 16 3 48
Final examination 1 11 11
Other 0 0 0
Total Work Load:
150
Total Work Load/25(h):
6
ECTS Credit of the Course:
6
CONCLUDING REMARKS BY THE COURSE LECTURER

NA