Note: This unit version is currently being edited and is subject to change!

SOFT3410: Concurrency for Software Development (2020 - Semester 2)

Download UoS Outline

Unit: SOFT3410: Concurrency for Software Development (6 CP)
Mode: Normal-Day
On Offer: Yes
Level: Senior
Faculty/School: School of Computer Science
Unit Coordinator/s: A/Prof Scholz, Bernhard
Session options: Semester 2
Versions for this Unit:
Campus: Camperdown/Darlington
Pre-Requisites: (INFO1105 OR INFO1905) OR ((INFO1103 OR INFO1113) AND (COMP2123 OR COMP2823)).
Brief Handbook Description: The manufacturing industry has experienced a radical shift in the way they design computers, with the integration of multiple processors on the same chip. This hardware shift now requires software developers to acquire the skills that will allow them to write efficient concurrent software. Software developers used to wait for manufacturers to increase the clock frequency of their processors to see increases in the performance of their programs, the challenge is now to exploit, in the same program, more and more processing resources rather than faster processing resources. In this unit, you will learn how to tackle the problems underlying this challenge, including developing and testing concurrent programs, synchronizing resources between concurrent threads, overcoming fairness issues and guaranteeing progress, and ensuring scalability in the level of concurrency.
Assumed Knowledge: None.
Department Permission Department permission is required for enrollment in this session.
Lecturer/s: Dr McGrane, Martin
Timetable: SOFT3410 Timetable
Time Commitment:
# Activity Name Hours per Week Sessions per Week Weeks per Semester
1 Lecture 2.00 1 13
2 Laboratory 1.00 1 12
3 Independent Study 10.00 13

Learning outcomes are the key abilities and knowledge that will be assessed in this unit. They are listed according to the course goal supported by each. See Assessment Tab for details how each outcome is assessed.

Unassigned Outcomes
1. Understanding of contemporary multi-core hardware.
2. Ability to synchronize concurrent threads.
3. Understanding of transactional memory.
4. Ability to program using low level atomic instructions.
5. Understanding of the challenges in developing concurrent data structures and algorithms.
6. Understanding of concepts including liveness (e.g., starvation) and safety properties.
7. Understanding the concept of sharing memory across concurrent executions.
Assessment Methods:
# Name Group Weight Due Week Outcomes
1 Mid-term No 20.00 Week 6 1, 2, 3, 4, 5, 6, 7,
2 Assignment 1* No 10.00 Week 8 1, 2, 3,
3 Assignment 2* No 20.00 Week 12 4, 5, 7,
4 Final exam No 50.00 Exam Period 1, 2, 3, 4, 5, 6, 7,
Assessment Description: * indicates an assessment tasks which must be repeated if a student misses it due to special considerations.

The penalty for lateness for assignments is 5% per day.

Final Exam: Students must obtain 40% in the final exam to pass the unit, regardless of the sum of the individual marks.

There may be statistically defensible moderation when combining the marks from each component to ensure consistency of marking between markers, and alignment of final grades with unit outcomes.
Policies & Procedures: IMPORTANT: School policy relating to Academic Dishonesty and Plagiarism.

In assessing a piece of submitted work, the School of Computer Science may reproduce it entirely, may provide a copy to another member of faculty, and/or to an external plagiarism checking service or in-house computer program and may also maintain a copy of the assignment for future checking purposes and/or allow an external service to do so.

Other policies

See the policies page of the faculty website at for information regarding university policies and local provisions and procedures within the Faculty of Engineering and Information Technologies.
Prescribed Text/s: Note: Students are expected to have a personal copy of all books listed.

Note that the "Weeks" referred to in this Schedule are those of the official university semester calendar

Week Description
Week 1 Lecture: Concurrent Programming Intro: Amdahl's law
Week 2 Lecture: Concurrency, threads, processes
Lab: Contention
Week 3 Lecture: Mutual exclusion, deadlocks
Lab: Deadlock
Week 4 Lecture: Transactional memory, starvation
Lab: Livelock
Week 5 Lecture: Synchrobench, consistency criteria
Week 6 Lecture: Hand-over-hand locking
Assessment Due: Mid-term
Week 7 Lecture: Lazy and Versioned locking
Lab: Coarse-grained locking
Week 8 Lecture: Spinlocks, test-and-test-and-set locks
Lab: Read/write locking
Assessment Due: Assignment 1*
Week 9 Lecture: Lock-freedom
Lab: Hand-over-hand locking
Week 10 Lecture: Elastic transactions
Lab: Optimistic locking
Week 11 Lecture: The No-Hot-Spot Skip List
Lab: Lock freedom
Week 12 Lecture: Reproducibility of concurrent experiments
Lab: Versioned lock
Assessment Due: Assignment 2*
Week 13 Lecture: Review
Exam Period Assessment Due: Final exam

Course Relations

The following is a list of courses which have added this Unit to their structure.

Course Year(s) Offered
Bachelor of Advanced Computing (Software Development) 2018, 2019, 2020
Bachelor of Advanced Computing/Bachelor of Commerce 2018, 2019, 2020
Bachelor of Advanced Computing/Bachelor of Science 2018, 2019, 2020
Bachelor of Advanced Computing/Bachelor of Science (Health) 2018, 2019, 2020
Bachelor of Advanced Computing/Bachelor of Science (Medical Science) 2018, 2019, 2020
Bachelor of Advanced Computing (Computational Data Science) 2018, 2019, 2020
Bachelor of Advanced Computing (Computer Science Major) 2018, 2019, 2020
Bachelor of Advanced Computing (Information Systems Major) 2018, 2019, 2020
Biomedical Mid-Year 2016, 2017, 2018, 2019, 2020
Biomedical 2016, 2017, 2018, 2019, 2020
Software Mid-Year 2021
Software 2020, 2021

Course Goals

This unit contributes to the achievement of the following course goals:

Attribute Practiced Assessed
(6) Communication and Inquiry/ Research (Level 2) No 0%
(7) Project and Team Skills (Level 2) No 0%
(8) Professional Effectiveness and Ethical Conduct (Level 2) No 0%
(5) Interdisciplinary, Inclusiveness, Influence (Level 3) No 0%
(4) Design (Level 3) No 0%
(2) Engineering/ IT Specialisation (Level 4) No 0%
(3) Problem Solving and Inventiveness (Level 3) No 0%
(1) Maths/ Science Methods and Tools (Level 3) No 0%

These goals are selected from Engineering & IT Graduate Outcomes Table 2018 which defines overall goals for courses where this unit is primarily offered. See Engineering & IT Graduate Outcomes Table 2018 for details of the attributes and levels to be developed in the course as a whole. Percentage figures alongside each course goal provide a rough indication of their relative weighting in assessment for this unit. Note that not all goals are necessarily part of assessment. Some may be more about practice activity. See Learning outcomes for details of what is assessed in relation to each goal and Assessment for details of how the outcome is assessed. See Attributes for details of practice provided for each goal.