Computer Networks and Distributed Systems

Module aims

The module is designed to provide you a clear overview of the challenges encountered when designing and building distributed applications and systems that are robust, efficient, secure and flexible as well as the underlying network protocols needed to support them. The emphasis will be on the conceptual basis for distributed and networked systems design and implementation and techniques to address the challenges and tradeoffs encountered, rather than a detailed study of particular systems and standards. Concepts will be illustrated with examples from practical systems.

Learning outcomes

Upon successful completion of this module you will be able to:
- create distributed applications and systems based on applying approaches seen during the course.
- analyse, evaluate and compare distributed applications and systems based on their design and implementation characteristics.
- appraise and evaluate network and security solutions.
- apply and evaluate concepts techniques and algorithms seen during the course.         

Module syllabus

* Network Overview: interfaces, protocols and services, connection-oriented and connectionless services, OSI & TCP/IP * Reference Models.
* Local Area Networks: Topologies - star, bus, ring, media access control - deterministic and probabilistic, IEEE 802.x. wireless networking.
* Data Link Protocols: framing and data transparency, error detection & correction, flow control.
* Interconnecting Networks: transparent and source routing bridges, switches. routers - adaptive and non-adaptive routing protocols.
* Internet Protocols: IP Addressing, ARP & RARP, IP & ICMP, UDP & TCP.
* Overview of distributed systems and their characteristics: motivation, distribution transparencies, design issues.
* Overview of distributed systems architectures, their rationales and their uses: middleware and distributed services, layered and tiered architectures, brokered services, message based architectues, distributed object systems, publish-subscribe architectures, peer-to-peer.
* Interaction primitives: message passing, synchronous, asynchronous interactions, message passing implementation.
* Data representation and transformation: Standard data representation, Basic and complex data types and encoding, binary, XML and JSON data representations.
* Interaction primitives: Remote procedure calls including semantics and implementation, Distributed Object Systems (using Java RMI or an alternative tecnology as an example)
* Distributed services eg. time services, clock synchronisation, network time, logical clocks.
* Coordination: failure detection, resource allocation, leader election.
* Security: threats, identification and authentication, symmetric/asymmetric cryptograpy, protocols for key distribution and autentication, Kerberos, Network security aspects and firewalls.           

Teaching methods

Class based lectures and tutorials combining theoretical and more practical examples. One-to-one or group Q&A sessions during tutorials.

An online service will be used as a discussion forum for the module. 

Assessments

One coursework, usually involving practical aspects of design, implementation and experimentation, will carry 20% of the module marks. The final examination will carry 80% of the module marks.

There will be detailed written feedback for the assessed coursework and class-wide feedback explaining common pitfalls and suggestions for improvement. Feedback on the formative exercises will be given in class.

Reading list

Core

Supplementary

Module leaders

Dr Marios Kogias
Professor Emil Lupu