Red X iconGreen tick iconYellow tick icon


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

    About this paper

    Paper title Concurrent Programming
    Subject Computer Science
    EFTS 0.1667
    Points 20 points
    Teaching period Not offered in 2022 (On campus)
    Domestic Tuition Fees ( NZD ) $1,371.61
    International Tuition Fees Tuition Fees for international students are elsewhere on this website.
    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


    Not offered in 2022

    Teaching method
    This paper is taught On Campus
    Learning management system
    Back to top