Module Database Search



MODULE DESCRIPTOR
Module Title
Concurrent Programming
Reference CM3113 Version 4
Created September 2023 SCQF Level SCQF 9
Approved April 2005 SCQF Points 15
Amended April 2024 ECTS Points 7.5

Aims of Module
To provide the student with knowledge of concurrent programming techniques and to develop the student's ability to design, implement and verify effective and secure software solutions within a concurrent programming development environment.

Learning Outcomes for Module
On completion of this module, students are expected to be able to:
1 Interpret user requirements and develop a concurrent solution as a collection of interacting threads of execution.
2 Explain concurrent interactions within the overall design and select an appropriate combination of synchronisation mechanisms to handle these interactions.
3 Defend the application of analytic rigour to verify correctness of an overall design approach.
4 Contrast the use of the facilities that provide support for multi-threading and synchronisation in a concurrent programming environment.

Indicative Module Content
Key concepts of multi-threaded programming including: thread attributes, thread life history, scheduling. Indivisible operations, race conditions, safety and liveness, formal approaches to verifying correctness of a concurrent design. Synchronisation primitives based on use of: shared variables, test and set primitives, semaphores, monitors. Generic concurrent programming problems and their solution: mutual exclusion, resource allocation, event ordering, interthread communication. Client Server systems and secure connections using Java Sockets. Security issues in concurrent systems.

Module Delivery
Key concepts are introduced and illustrated through the medium of lectures. Self-paced tutorial questions and solutions are made available via the Virtual Learning Environment. In the accompanying laboratory sessions the student will progress through a series of design and implementation exercises intended to test the student's understanding of the lecture content and to develop proficiency in the practical application of concurrent programming skills.

Indicative Student Workload Full Time Part Time
Contact Hours 30 N/A
Non-Contact Hours 120 N/A
Placement/Work-Based Learning Experience [Notional] Hours N/A N/A
TOTAL 150 N/A
Actual Placement hours for professional, statutory or regulatory body    

ASSESSMENT PLAN
If a major/minor model is used and box is ticked, % weightings below are indicative only.
Component 1
Type: Examination Weighting: 50% Outcomes Assessed: 2, 3
Description: This is a closed book examination.
Component 2
Type: Coursework Weighting: 50% Outcomes Assessed: 1, 4
Description: This is a coursework including analysis, implementation and testing of a concurrent system.

MODULE PERFORMANCE DESCRIPTOR
Explanatory Text
The calculation of the overall grade for this module is based on equal weighting of C1 and C2. The minimum grade required to obtain a pass is D.
Examination:
Coursework: A B C D E F NS
A A A B B C E
B A B B C C E
C B B C C D E
D B C C D D E
E C C D D E E
F E E E E E F
NS Non-submission of work by published deadline or non-attendance for examination

Module Requirements
Prerequisites for Module CM2100 Advanced Software Design and Development or equivalent.
Corequisites for module None.
Precluded Modules None.

INDICATIVE BIBLIOGRAPHY
1 GOETZ Brian., 2006. Java Concurrency in Practice. Addison-Wesley.
2 GONZALEZ Javier F., 2016. Mastering Concurrency Programming with Java 8. Packt Publishing.
3 FREISEN Jeff, 2015. Java Threads and the Concurrency Utilities. Apress.
4 The Java Tutorials: Oracle Java Documentation available via https://docs.oracle.com/javase/tutorial/essential/concurrency/


Robert Gordon University, Garthdee House, Aberdeen, AB10 7QB, Scotland, UK: a Scottish charity, registration No. SC013781