Skip to main content

We are aiming for an incremental return to campus in accordance with guidelines provided by NSW Health and the Australian Government. Until this time, learning activities and assessments will be planned and scheduled for online delivery where possible, and unit-specific details about face-to-face teaching will be provided on Canvas as the opportunities for face-to-face learning become clear.

We are currently working to resolve an issue where some unit outline links are unavailable. If the link to your unit outline does not appear below, please use the link in your Canvas site. If no link is available on your Canvas site, please contact your unit coordinator.

Unit of study_

SOFT3410: Concurrency for Software Development

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.

Code SOFT3410
Academic unit Computer Science
Credit points 6
Prerequisites:
? 
(INFO1105 OR INFO1905) OR ((INFO1103 OR INFO1113) AND (COMP2123 OR COMP2823))
Corequisites:
? 
None
Prohibitions:
? 
None

At the completion of this unit, you should be able to:

  • LO1. Understanding the landscape of modern multi-core and many-core computer systems, real-world examples and how this class can be used in reality
  • LO2. Understanding the basic system programming, Linux, C basic programming knowledge, C system programming, C pointers and memory management, safety issues with memory management.
  • LO3. Understanding the concurrent programming fundamentals, memory hierarchy and optimisations, and contemporary multi-core hardware
  • LO4. Understanding the challenges in developing concurrent data structures and algorithms, and contemporary multi-core hardware
  • LO5. Understanding "process" in the context of concurrent and parallel programming
  • LO6. Understanding threads and synchronisation; demonstrate ability to synchronize concurrent threads
  • LO7. demonstrate ability to program using low level atomic instructions
  • LO8. understand the concept of sharing memory across concurrent executions.
  • LO9. Understanding different locks mechanism and how to use them in parallel programming
  • LO10. Understanding shared memory programming in multi-core environment, able to write safe and efficient multithreading programs using pthread and OpenMP
  • LO11. Understanding the concept of message passing in parallel programming; able to write basic parallel codes on distributed systems using message passing interface
  • LO12. Understanding parallel design patterns.

Unit outlines

Unit outlines will be available 2 weeks before the first day of teaching for 1000-level and 5000-level units, or one week before the first day of teaching for all other units.

There are no unit outlines available online for previous years.