Note: This unit is an archived version! See Overview tab for delivered versions.

SOFT3410: Concurrency for Software Development (2018 - 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: Dr Gramoli, Vincent
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.
Lecturer/s: Dr Gramoli, Vincent
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

Attributes listed here represent the key course goals (see Course Map tab) designated for this unit. The list below describes how these attributes are developed through practice in the unit. See Learning Outcomes and Assessment tabs for details of how these attributes are assessed.

Attribute Development Method Attribute Developed
Ability to design concurrent software by taking an object oriented approach. Design (Level 3)
A technology for enabling concurrency in a program running on multi-core machines. Engineering/IT Specialisation (Level 4)
A deep understanding of synchronization in concurrent software. Maths/Science Methods and Tools (Level 3)

For explanation of attributes and levels see Engineering & IT Graduate Outcomes Table 2018.

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.

Engineering/IT Specialisation (Level 4)
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.
Maths/Science Methods and Tools (Level 3)
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%
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 https://web.timetable.usyd.edu.au/calendar.jsp

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
Synchrobench
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: Programming assignment
Week 9 Lecture: Lock-freedom
Lab: Hand-over-hand locking
Week 10 Lecture: Elastic transactions
Lab: Optimistic locking
Assessment Due: Programming assignment 2
Week 11 Lecture: The No-Hot-Spot Skip List
Lab: Lock freedom
Week 12 Lecture: Reproducibility of concurrent experiments
Lab: Versioned lock
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, 2020, 2021, 2022, 2023, 2024, 2025
Advanced Computing / Science 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025
Advanced Computing / Science (Medical Science) 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025
Bachelor of Advanced Computing (Computational Data Science) 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025
Advanced Computing / Commerce 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025
Bachelor of Advanced Computing (Computational Data Science) - Mid-Year 2021, 2022, 2023, 2024, 2025
Bachelor of Advanced Computing (Computer Science) 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025
Bachelor of Advanced Computing (Cybersecurity) 2022, 2023, 2024, 2025
Bachelor of Advanced Computing (Computer Science) - Mid-Year 2021, 2022, 2023, 2024, 2025
Bachelor of Advanced Computing (Cybersecurity) - Mid-Year 2021, 2022, 2023, 2024, 2025
Bachelor of Advanced Computing (Information Systems) (not offered from 2022+) 2018, 2019, 2020, 2021
Bachelor of Advanced Computing (Software Development) - Mid-Year 2021, 2022, 2023, 2024, 2025
Biomedical Engineering (mid-year) 2016, 2017, 2018, 2019, 2020
Biomedical Engineering 2016, 2017, 2018, 2019, 2020
Software Engineering (mid-year) 2020, 2021, 2022, 2023, 2024, 2025
Software / Project Management 2019+ 2020, 2021, 2022, 2023, 2024, 2025
Software Engineering 2020, 2021, 2022, 2023, 2024, 2025
Software / Arts (2022 and earlier) 2020, 2021, 2022
Software / Arts 2023+ 2023, 2024, 2025
Software / Commerce 2020, 2021, 2022
Software / Commerce 2023+ 2023, 2024, 2025
Software / Science 2020, 2021, 2022, 2023, 2024, 2025
Software / Science (Health) 2020, 2021, 2022
Software / Science - Mid Year 2023, 2024, 2025
Software / Law 2020, 2021, 2022
Software / Law 2023+ 2023, 2024, 2025
Software / Science (Medical Science Stream) 2020, 2021, 2022

Course Goals

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

Attribute Practiced Assessed
Professional Conduct (Level 2) No 0%
Project and Team Skills (Level 2) No 0%
Communication (Level 2) No 0%
Information Seeking (Level 3) No 0%
Engineering/IT Specialisation (Level 4) Yes 40%
Maths/Science Methods and Tools (Level 3) Yes 60%
Design (Level 3) Yes 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.