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

Reading List

C++ Concurrency in Action. Williams, A. (2012) Manning Publications. ISBN 9781933988771

Seven Concurrency Models in Seven Weeks - When Threads Unravel. 1st Edition. Butcher, P., 2014. Pragmatic Bookshelf. ISBN-10: 1937785653; ISBN-13: 978-1937785659

Heterogeneous Computing with OpenCL 2.0 by David R. Kaeli, Perhaad Mistry, Dana Schaa, Dong Ping Zhang.? ISBN-10: ? 0128014148. ISBN-13: 978-0128014141