CS3S666 - Parallel and Concurrent Programming 01 Sep 2022 - 31 Aug 2028 | Version 5
Associated Module Information
| Module Code: | CS3S666 | ||
|---|---|---|---|
| Module Title: | Parallel and Concurrent Programming | ||
| Faculty: | Faculty of Computing, Engineering and Science | ||
| Faculty Group: | Computing and Mathematical Sciences | ||
| Faculty Sub Group: | Computer Science | ||
| Module Leader: | Jennifer Whewell | ||
| Module Team: | Christopher Tubb | ||
| First Intended Intake: | SEP 2017 | Final Year of Intake: | |
| Date Closed: | |||
| Credit Value: | 20 | Credit Level: | 6 |
| Language: | English | ||
| Percentage of Module Taught in Welsh: | 0 | ||
| Equivalent Module: | |||
| HECOS codes: | 100956 - programming | ||
| HECOS Code Weighting: | 100 | ||
Document Version Information
| Version | 5 |
|---|---|
| Valid From | 01 Sep 2022 |
| Valid To | 31 Aug 2028 |
Module Aims
To introduce the theoretical and practical issues of designing and implementing parallel and concurrent systems.
Content Summary
Concurrency fundamentals:
- Non-determinism, correctness and sequential consistency.
- Concurrency in modern Operating Systems - processes, threads, remoting.
- Evaluating the performance of concurrent algorithms & Amdahl's law.
- Critical sections: mutual exclusion, progress and bounded waiting requirements.
- Atomic operations and implementing critical sections.
- Problems of deadlock, livelock and data races.
- Concurrent models: SIMD, MIMD, MISD.
- Constructs for controlling access to critical sections - Semaphores, locks, monitors.
- Message passing approaches.
- Lockless approaches.
- Transactional Memory (TM) and converting lock-based code to TM & the issues of lock scope that must be taken into account.
- Asynchronous APIs.
- Functional programming comparison to imperative programming.
GPGPU (General Purpose Graphics Processing Unit):
- Modelling problems for the graphics card.
- Limitations of specific commonly-used standards.
- Introduction to OpenCL , CUDA and DirectCompute.
- Introduction to writing GPGPU algorithms.
Considerations for Parallelisation:
- CPU architectures, including Intel hyper-threading & Cell architecture.
- Cache architecture & shared memory models.
- Execution models (including SIMD on traditional GPGPU architectures and MIMD on Nvidia's Fermi architecture for example).
- Distributed architectures.
- Language support for parallelism and concurrency.
Learning and Teaching Methods
| Activity Type | Hours |
|---|---|
| Lecture | 24 |
| Practical classes and workshops | 24 |
| Independent Study | 80 |
| Directed Study | 72 |
| Total Hours Selected | 200 |
Learning Outcomes
| # | Learning Outcome |
|---|---|
| LO1 | Demonstrate comprehension and analysis in the effective application of parallel and concurrent programming techniques |
Module Requisites
N/A
Assessment Criteria
| Assessment Category | Assessment Type | Description | Duration | Word Count | Weight (%) | Best of? | Pass Mark |
|---|---|---|---|---|---|---|---|
| Asynchronous Assessment | Practical Written Work 1 | A practical exercise involving parallel and/or concurrent implementation | 0 | 1000 | 50 | No | 40 |
| Synchronous Online Practical Assessment | Practical Coursework (Online) 1 | Exercises undertaken in class or in laboratory aimed at assessing the application of knowledge, analytical and problem-solving skills. | 0 | 2000 | 50 | No | 40 |
Assessment Matrix
| Assessment Type | Learning Outcomes | ||
|---|---|---|---|
| LO1 | |||
| Practical Written Work 1 | ✔ | ||
| Practical Coursework (Online) 1 | ✔ | ||