Concurrent and Distributed Systems COMP2310
Course overview
Course description
This course is concerned with aspects of computation beyond sequential programs. Concurrency occurs naturally in most real-world applications and is also strongly suggested by any modern computer architecture. Working professionally in computing today thus means to be able to handle those challenges and to employ the available hardware to the fullest. This course introduces all basic mechanisms to analyse, design, and manage single computer as well as distributed applications. Topics addressed include: Basics of concurrency and its modelling, Mutual exclusion, Condition synchronization, Safety and liveness, Message passing, Architectures including operating systems and Distributed systems including networks, transactions and replication.
Rationale
Concurrency is an essential feature of many computer systems. The ability to work effectively with operating systems, real-time systems, large databases, distributed information systems and even sophisticated user interfaces requires a good understanding of the problems that concurrency entails.
Any system which operates as a set of separate processes which 'communicate' by sending `messages' to each other is a distributed system. In practice, the high-level abstractions of distributed systems are used on hardware ranging from single-processor computers to multi-computers, networks of workstations, and large networks such as the Internet.
The software engineer must be able to reason about concurrent and distributed systems and be able to apply available modelling techniques and tools that help one solve the problems that concurrent and distributed computation can introduce.
Distributed systems is one of the hottest topics in computing today, both in academia and industry, not least because of the impact of the Internet and web technologies. A sound knowledge of theory and practice is essential for computing professionals today and in the future.
Ideas
This course will carry the main responsibility for:
- presenting the main ideas associated with concurrent computation: processes, cooperation and interference, control of resources, communication;
- presenting the main ideas associated with distributed computation: message passing, remote procedure call, client/server systems, atomic and idempotent operations;
- providing an understanding of operating system structure;
- developing experience with some techniques for achieving mutual exclusion and synchronization: semaphores and monitors;
- teaching the ways that concurrency is realized in the Java programming language and under the Unix operating system.
The course shares responsibility for teaching software design by providing an introduction to the modelling techniques and tools in this area. It is one of several courses that provide practical programming experience in an object-oriented framework. It will assume principal responsibility for training students in their second industrial strength object-oriented programming language.
Topics
The following topics will be covered:
- a taxonomy of concurrent systems;
- Tasks, threads and processes;
- mutual exclusion;
- semaphores and monitors
- process and thread management;
- operating systems overview;
- synchronous and asynchronous message passing;
- interprocess communication;
- atomic and idempotent operations;
- persistent and replicated data;
- distributed computation;
- deadlock and livelock;
- correctness and fairness properties;
- transaction processing;
- networking.
ACM KU's
AR7 Alternative Architectures (2 of 5)
OS1 History, Evolution, and Philosophy (3 of 3)
OS2 Tasking and Processes (2 of 2)
OS3 Process Coordination and Synchronization (4 of 4)
OS9 Communications and Networking (2 of 3)
Distributed and Real-time Systems (2 of 3) Other material included.
PL12 Distributed and Parallel Programming Constructs (3 of 3)
Textbooks
Jeff Magee and Jeff Kramer, Concurrency: State Models and Java Programming, 2nd edn, Wiley, 2006.
Ben-Ari, M.Principles of Concurrent and Distributed Programming. Prentice Hall, 1990.
A.D. Kshemkalyani and M. Singhal, Distributed Computing: Principles, Algorithms, and Systems, Cambridge University Press, March 2011.
George Coulouris, Jean Dollimore, Tim Kindberg and Gordon Blair, Distributed Systems Concepts and Design, Fifth Edition, Addison Wesley, May 2011
Workload
Thirty one-hour lectures, nine two-hour tutorials/laboratory sessions.


