This course aims to equip students with fundamental knowledge and practical skills in parallel computing, with a strong emphasis on parallel algorithm design, parallel programming patterns, and performance-aware implementation. It is intended for students who are interested in understanding how computational problems can be decomposed, structured, and executed efficiently on parallel systems.
The course introduces the core principles of parallelism from the perspective of algorithm design through to implementation and execution. Students will learn how to analyze computational problems, identify opportunities for parallelism, and apply common parallel patterns to design scalable solutions. The course also covers the relationship between algorithms, programming models, and underlying hardware, enabling students to understand how design choices affect performance and scalability.
The curriculum is organized into several key components:
- Foundations of Parallel Computing: Introduction to the fundamental concepts of parallelism, including concurrency, decomposition strategies, task and data parallelism, and performance metrics.
- Parallel Architectures and Execution Models: Overview of modern parallel architectures and execution environments, including shared-memory and distributed-memory systems, and the impact of hardware characteristics on program performance.
- Parallel Algorithm Design and Patterns: Study of common parallel design strategies and patterns, such as divideand-conquer, pipeline, task parallelism, and data-parallel approaches, with emphasis on designing scalable algorithms.
- Parallel Programming and Performance Considerations: Implementation of parallel algorithms using established programming models, with attention to synchronization, communication, load balancing, and performance analysis.
Through this approach, students will gain experience in translating algorithmic ideas into efficient parallel implementations and understanding how programs execute on parallel systems. The course aims to develop students? ability to reason about parallel performance, design scalable solutions, and apply parallel computing techniques to computational problems in scientific and engineering domains.
Prerequisite Graph
Available Indexes
| Mon | Tue | Wed | Thu | Fri | |
|---|---|---|---|---|---|
| 830 | 10534 LAB (TEL1) 0830-1120 Mon HWLAB1 Odd Weeks | ||||
| 900 | |||||
| 930 | |||||
| 1000 | |||||
| 1030 | |||||
| 1100 | |||||
| 1130 | |||||
| 1200 | |||||
| 1230 | |||||
| 1300 | |||||
| 1330 | |||||
| 1400 | |||||
| 1430 | COMMON LEC (SCL4) 1430-1620 Wed LT6 | ||||
| 1500 | |||||
| 1530 | |||||
| 1600 |
Other Relevant Mods
SC1001
Introduction To Computational Thinking & Programming
SC1004
Linear Algebra For Computing
SC1005
Digital Logic
SC1006
Computer Organisation & Architecture
SC1007
Data Structures & Algorithms
SC1008
C & C++ Programming
SC1013
Physics For Computing
SC1123
Math 1: Linear Algebra & Calculus For Computing
SC1301
Language & Logic