To provide the students with knowledge of parallel programming in the field of parallel computing, so that the students are able to fully utilise the hardware resource in multi-processes and multi-threading software development. This course provides the students with knowledge and concept of parallel programming including data parallelism, multiprocessor architecture, process communication, data sharing, synchronous parallelism, multi-computer architecture, message passing programs, replicated workers, and distributed termination detection.
Content Outline of the Course/Module:
- Introduction to Software Engineering
- Introduction to Parallel Computers
- Message-Passing Programming
- Embarrassingly Parallel Computations
- Partitioning and Divide and Conquer Strategies
- Concept Description
- Pipelined Computations
- Synchronous Computations
- Load Balancing and Termination Detection
- Programming with Shared Memory
- Distributed Shared Memory Systems and Programming
- Parallel Programming Examples
Upon completion of this course, students should be able to:
- Evaluate parallel programs by calculating performance measures.
- Design and write an efficient parallel algorithm for a given problem.
- Solve and execute grand challenge problems in different fields.
- Demonstrate the advantage of parallel programming in the commercial industry.
- Prepare the report to depict the developed project in group assignment.
|Teaching-learning Methods||Assessment Methods|
|Lecture||Assignment, Progress Test, Final Examination|
|Tutorial||Assignment, Progress Test, Final Examination|
|Practical Works||Assignment, Progress Test, Final Examination|
|Computer-based Learning||Assignment, Progress Test, Final Examination|