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
-
Distributed systems : concepts and design / [eletronic resource]
Fifth edition., Addison-Wesley
-
Computer networks.
Sixth edition /; Global edition., Pearson
-
Distributed Systems
3.01 edition, CreateSpace Independent Publishing Platform
Supplementary
-
Introduction to Reliable and Secure Distributed Programming
2, Springer Berlin / Heidelberg
-
Network security essentials : applications and standards
Sixth edition.; Global edition., Harlow, England : Pearson
-
Network security essentials : applications and standards
Sixth edition.; Global edition., Pearson
-
Java in distributed systems : concurrency, distribution & persistence
Wiley
Module leaders
Dr Marios KogiasProfessor Emil Lupu