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

SOFT3410: Concurrency for Software Development (2019 - 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: 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 Programming assignment No 10.00 Week 8 1, 2, 3,
3 Programming assignment 2 No 10.00 Week 10 4, 5, 7,
4 Programming assignment 3 No 20.00 Week 13 1, 2, 4, 5, 6, 7,
5 Final exam No 40.00 Exam Period 1, 2, 3, 4, 5, 6, 7,
Assessment Description: Two assignments 10%, 20%

- One mid-term exam 20%

- One final exam, 50%
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 Lab: Livelock
Lecture: Transactional memory, starvation
Week 5 Synchrobench
Lecture: Synchrobench, consistency criteria
Week 6 Lecture: Hand-over-hand locking
Assessment Due: Mid-term
Week 7 Lab: Coarse-grained locking
Lecture: Lazy and Versioned locking
Week 8 Lecture: Spinlocks, test-and-test-and-set locks
Lab: Read/write locking
Assessment Due: Programming assignment
Week 9 Lecture: Lock-freedom
Lab: Hand-over-hand locking
Week 10 Lab: Optimistic locking
Lecture: Elastic transactions
Assessment Due: Programming assignment 2
Week 11 Lecture: The No-Hot-Spot Skip List
Lab: Lock freedom
Week 12 Lab: Versioned lock
Lecture: Reproducibility of concurrent experiments
Week 13 Lecture: Review
Assessment Due: Programming assignment 3
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
Bachelor of Advanced Computing/Bachelor of Commerce 2018, 2019
Bachelor of Advanced Computing/Bachelor of Science 2018, 2019
Bachelor of Advanced Computing/Bachelor of Science (Health) 2018, 2019
Bachelor of Advanced Computing/Bachelor of Science (Medical Science) 2018, 2019
Bachelor of Advanced Computing (Computational Data Science) 2018, 2019
Bachelor of Advanced Computing (Computer Science Major) 2018, 2019
Bachelor of Advanced Computing (Information Systems Major) 2018, 2019
Biomedical Mid-Year 2016, 2017, 2018, 2019
Biomedical 2016, 2017, 2018, 2019

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.