Skip to main content
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:
? 
COMP2017 OR COMP2129
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 SIMD programming for GPU and GPU architecture basics.

Unit outlines

Unit outlines will be available 2 weeks before the first day of teaching for the relevant session.