| || |
Introduction to Distributed Systems and Common Applications in E-Commerce, Big Data, Modelling and Analytics, Ubiquitous Computing, Pervasive Systems, Massive Multiplayer Games, High Performance and High Availability Applications, Cloud Computing, Content Delivery Networks and Edge Computing.
Architectural Paradigms: Client/Server, SOA, Peer to Peer, Broker Architecture, Event Driven and Shared Memory models.
One primary theme explores the evolution of Internet based systems for Client/Server communication and data exchange formats from the TCP/IP protocol, socket interface, early RPC, ORB, RMI, text based HTTP dependent web services using XML technologies, REST style with JSON, high performance synchronous, asynchronous and streaming binary RPC using HTTP/2, gRPC and protocol buffers, multicast group communication, reliability and ordering algorithms and analysis of resource and latency costs.
The other primary theme explores systems for expressing and managing application concurrency, multithreading theory, thread management and synchronisation for Posix threads, Java threads, concept of threadpools and executors. The OpenMP API for expressing parallelism on multiprocessor shared memory architectures. MPI for large scale parallel distributed computing demonstrating the power of high performance collective communication primitives for moving data between processing elements when implementing Map/Reduce style programming patterns. All of these systems are chosen as they can be installed and explored on a standalone desktop environment.
Finally, a general introduction to transaction systems and reliability of Client/Server interactions is presented explaining how to implement atomicity, isolation and durability propeties of transactions in concurrent systems and understanding latency and resource costs of these implementations.
Students will carry out coursework from a selection of programming assignments given out on specific topics.