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
|Not offered in 2022 (On campus)
|Domestic Tuition Fees ( NZD )
|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
- More information link
- View more information about COSC 441
- 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