Skip to main content

Concurrent Programming:  2017-2018



Schedule S1(CS&P)(3rd years)Computer Science and Philosophy

Part A CoreComputer Science

Schedule S1(M&CS)(3rd years)Mathematics and Computer Science

Schedule AMSc in Advanced Computer Science



Many challenges arise during the design and implementation of concurrent and distributed programs. The aim of this course is to understand those challenges, and to see techniques for tackling them. The main paradigm to be considered is message passing concurrency, where independent processes, with private variables, interact by passing messages.

Learning outcomes

At the end of the course students are expected to understand:
  • The conceptual foundations of concurrent programming, and
  • A variety of effective ways of structuring concurrent and distributed programs.


This course combines well with the Concurrency course: Concurrent Programming helps provide motivation for Concurrency, while Concurrency helps to provide formal underpinnings for this course. 

Students should have a basic understanding of Object Oriented Programming (objects, classes, interfaces, inheritance, abstract classes, polymorphism), and be comfortable with programming in Scala. Although the methods of reasoning used in the course will be informal, students should be broadly familiar with the notions of pre- and post-condition, invariant, and abstraction function.

The course will have a number of practicals, to allow students to gain experience with concurrent programming. These practicals will use Scala.


A detailed synopsis summarising the running order and content of lectures to be given in HT 2017-18 appears in the Lectures section of the course materials site.


Reasons for concurrency; processes, threads; safety and liveness. Message passing concurrency; deadlock. Clients and servers. Interacting peers.  Synchronous parallel computation.  Patterns of concurrent programming: data parallel; bag of tasks; recursive parallel; task parallel.  Low-level concurrency controls: monitors; semaphores.


Reading list

  • Alternative: Principle of Concurrent and Distributed Programming, M. Ben-Ari, Prentice Hall, 1990.

  • Alternative background on Scala: Programming in Scala, Martin Odersky, Lex Spoon, Bill Venners, artima, 2008.


Students are formally asked for feedback at the end of the course. Students can also submit feedback at any point here. Feedback received here will go to the Head of Academic Administration, and will be dealt with confidentially when being passed on further. All feedback is welcome.

Taking our courses

This form is not to be used by students studying for a degree in the Department of Computer Science, or for Visiting Students who are registered for Computer Science courses

Other matriculated University of Oxford students who are interested in taking this, or other, courses in the Department of Computer Science, must complete this online form by 17.00 on Friday of 0th week of term in which the course is taught. Late requests, and requests sent by email, will not be considered. All requests must be approved by the relevant Computer Science departmental committee and can only be submitted using this form.