Accessibility Skip to Global Navigation Skip to Local Navigation Skip to Content Skip to Search Skip to Site Map Menu

COSC441 Concurrent Programming

Due to COVID-19 restrictions, a selection of on-campus papers will be made available via distance and online learning for eligible students.
Find out which papers are available and how to apply on our COVID-19 website

Theory and practice of concurrent programming, including locks, transactional memory, and message passing; multicore and distributed systems; and specification and testing of protocols.

Paper title Concurrent Programming
Paper code COSC441
Subject Computer Science
EFTS 0.1667
Points 20 points
Teaching period Not offered in 2021 (On campus)
Domestic Tuition Fees (NZD) $1,348.60
International Tuition Fees (NZD) $5,967.53

^ Top of page

There are no formal prerequisites for the 400-level papers, but prior knowledge is assumed. Admission to these papers is restricted not only by numbers, but by satisfactory grades in 300-level COSC papers.
Computer Science Adviser
Teaching staff

Teaching staff to be confirmed.

Paper Structure

Concurrent programming is about building programs in which many activities are taking place, and the existence of and collaboration between these activities is essential to the program's design. In distributed systems, like credit card systems and telephone networks, the activities happen on physically separate machines communicating by sending messages over wires or radio channels. In multicore computers, the activities may take place on one or many cores, and they may communicate through shared memory. The difficulties and principles are similar.

The first half of the paper is about shared memory concurrency, presenting general concepts in the context of POSIX threads.

The second half is about message passing between logically separate processes using Erlang.

There will also be material on specification and verification. Students will learn about designing, implementing and testing concurrent and distributed programs. Students will learn about deadlock, starvation, livelock, races and such hazards; about why "let it crash" is a good approach to errors; about the difference between task parallelism and data parallelism; and some concurrency design patterns.


  • 40% internal
  • 60% exam
Teaching Arrangements
There is one 2-hour lecture per week.

Textbooks are not required for this paper.

Course outline
View the course outline for COSC 441
Graduate Attributes Emphasised
Critical thinking.
View more information about Otago's graduate attributes.
Learning Outcomes

Students who successfully complete this paper will

  • Understand the difference between parallelism as a means of improving performance and concurrency as a way of modelling interactions between interacting systems
  • Understand the costs and benefits of shared memory
  • Understand well-established techniques, such as mutual exclusion, condition queues, threads and semaphores
  • Understand transactional memory
  • Understand message passing and its connection with distribution
  • Practise using the POSIX standard facilities for concurrency
  • Practise using a message passing system used to build successful large-scale concurrent applications
  • Understand some concurrency problems and what to do about them

^ Top of page


Not offered in 2021

Teaching method
This paper is taught On Campus
Learning management system