As multi-core machines become more prevalent, different programming paradigms have emerged for harnessing extra processors for betterperformance. This course explores parallel computation (programs that run on more than one core) as well as the related problem of distributed computation (programs that run on more than one). The goal of the course is to introduce students to parallel and distributed processing, including both theory and hands-on experience. Topics covered: An overview of parallel computing; Languages and programming environments; Message-passing computing; Embarrassingly parallel computations; Partitioning and divide-and-conquer strategies; Pipelined computations; Synchronous computations; Load balancing and termination detection; Programming with shared memory; Algorithms and applications.
Intended learning outcomes
Knowledge &understand
The student should be familiar with parallel programming languages.
To familiarize the student with an understanding of all the basic concepts and types of parallel and distributed computers.
The student should be familiar with the methods of processing accounts.
The student should be familiar with the method of scheduling types of operations package and processors.
mental skills
The student solves a specific problem using distributed parallel computers.
A The student solves the problem in the fastest way during the implementation of the program.
The student should propose solutions and ideas other than the ideas given in the lectures.
The student should distinguish how to link the basic concepts of parallel programming languages and choose the appropriate ones to solve a problem.
Practical & professional skills
The student should write integrated programs for the package of operations and processors to solve a specific problem in the best and simplest way.
The student should use the operations package together using distributed parallel computers.
The student should use scheduling in the implementation of programs.
The student must apply one of the parallel programming languages distributed within the lab.
The student must perform an integrated project to implement all of the above explained in the course.
General and transferable skills
The student should be able to solve problems using distributed parallel computing.
The student should be able to use scheduling and handle all the basic concepts of distributed parallel computing.
The student should be able to work in a team to solve, apply and implement a problem.
The student should be able to deliver a project in the field of distributed parallel computing.
Teaching and learning methods
Theoretical lectures in the classroom.
Practical lectures inside the laboratory with the help of teaching assistants in the college.
A panel discussion between students and in the presence of the professor to obtain new opinions and ideas.
Assignments and tests to motivate students to reach the best way to solve and discuss them with the professor
Methods of assessments
Midterm exam = 20
Scientific activities (e.g. writing a report or making a presentation) = 10
Discussions = 5
Practical test = 15
Final exam = 50
Course contents
Introduction to parallel and distributed computing