University of Oxford Logo University of OxfordSoftware Engineering - Home
On Facebook
Follow us on twitter
Linked in
Linked in
Google plus
Google plus
Stumble Upon
Stumble Upon

Concurrent Oriented Programming

Scaling the next generation of soft-real time server side applications will be achieved through massively concurrent programs executing on multi-core processors in a potentially distributed computing environment. Erlang is an open source language that, thanks to its lightweight processes, no shared data, and built-in distribution, caters for these types of problems. This course uses Erlang as a tool in explaining how to implement highly concurrent, massively scalable soft real-time systems with an emphasis on fault tolerance and high availability.


This course normally runs twice a year.

Course dates

4th December 2023Oxford University Department of Computer Science - Held in the Department05 places remaining.
8th July 2024Oxford University Department of Computer Science - Held in the Department02 places remaining.


Students will gain experience in implementing highly concurrent, scalable and distributed soft real time systems. By learning Erlang, they will be given exposure to language concepts and techniques that can be applied in other domains, making them better programmers and systems architects, regardless of the tools or programming language being used.


motivation; history of Erlang; product and research examples.
Basic sequential programming in Erlang:
datatypes; pattern-matching; functions, modules and built-in functions (BIFs); guards and recursion.
Concurrent programming:
creation and lifecycle of processes; sending and receiving messages; selective reception; passing data; time-outs and registering processes.
Process design patterns:
client-server systems; finite-state machines; event handlers; synchronous versus asynchronous message passing.
Process error handling:
process links, exit signals, propagation semantics; design patterns for robust systems.
Code updating:
software upgrade at runtime.
Distributed programming:
requirements of distributed systems; distribution syntax and semantics; naming, visibility and security.
ETS and Dets tables:
Fast data access; Erlang Term Storage (ETS) and Disk ETS (Dets); guidelines for using tables; table visualization.
the Open Telecoms Platform libraries; generic servers; supervisors.


The course requires good programming skills (in any programming language). It will be helpful, but not necessary, to have taken the Functional Programming course first.