CPR | 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.
Frequency
This course normally runs twice a year.
Course dates
4th December 2023 | Oxford University Department of Computer Science - Held in the Department | 05 places remaining. |
8th July 2024 | Oxford University Department of Computer Science - Held in the Department | 02 places remaining. |
Objectives
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.
Contents
- Introduction:
- 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.
- Behaviours:
- the Open Telecoms Platform libraries; generic servers; supervisors.
Requirements
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.