DISTRIBUTED SYSTEMS - 2022/3
Module code: COM3026
A distributed system is built of a network of computing devices, which coordinate their actions via message passing to achieve a common goal. Typically, system components are assumed to operate concurrently, lack a global clock and to fail independently. This module shall build and consolidate your knowledge of advanced algorithms, computer networking and/or parallel computing. You shall learn to describe the principles of distributed systems, such as communication, scheduling and fault tolerance as well as to compare and contrast between a broad set of instances of distributed systems, algorithms and protocols (e.g., peer-to-peer systems, distributed hash tables, MixNets, distributed ledger technologies) within the context of various applications.
CHOCKLER Gregory (Elec Elec En)
Number of Credits: 15
ECTS Credits: 7.5
Framework: FHEQ Level 6
JACs code: I100
Module cap (Maximum number of students): N/A
Overall student workload
Independent Learning Hours: 91
Lecture Hours: 11
Tutorial Hours: 8
Laboratory Hours: 14
Guided Learning: 4
Captured Content: 22
Prerequisites / Co-requisites
Content covered will include key principles, concepts, architectures, algorithms and technologies for distributed systems, for example:
- Distributed System Models
- Time in Distributed Systems (Clock Synchronisation, Logical Time)
- Distributed Algorithms (Mutual Exclusion, Leader Election, Consensus)
- Fault Tolerance
- Interprocess Communication
- Remote Invocation
- Message Routing
- Coordination and Agreement
- Distributed Transactions
- Advanced and modern distributed systems (Blockchains and Distributed Ledgers)
- Security principles for Distributed Systems
|Assessment type||Unit of assessment||Weighting|
|Online Scheduled Summative Class Test||ONLINE (OPEN BOOK) CLASS TEST 1 WITHIN A 4 HOUR WINDOW||20|
|Online Scheduled Summative Class Test||ONLINE (OPEN BOOK) CLASS TEST 2 WITHIN A 4 HOUR WINDOW||20|
|Oral exam or presentation||IN PERSON PROJECT PRESENTATION||20|
|Coursework||GROUP PROGRAMMING ASSIGNMENT||40|
An individual alternative assessment will be provided where required in place of the Group Programming Assignment
The assessment strategy is designed to provide students with the opportunity to demonstrate their achievement of the learning outcomes. Summative assessment shall comprise of: (1) A group based coursework that shall assess learning outcomes 2, 3, 4 and 5 and will include aspects of distributed systems design and implementation; (2) Am in person of the coursework (3) Two mid-term online open book class tests to be completed within 4 hours that shall assess learning outcomes 1, 2, 4 and 5.
Assessment criteria for the coursework will be released alongside the coursework assignment.
Formative assessment is provided via verbal feedback given in workshop/lab sessions on the students attempts at the workshop/lab exercises and theoretical questions.
- This module will equip the students with the analytical skills and knowledge to design and architect scalable, dependable and secure distributed systems.
- Students will develop their ability to construct and present sound design decisions using the knowledge and analytical skills they will acquire.
|001||Describe the key characteristics and principal concepts of distributed systems and critically compare them to a centralised view of computing.||KC|
|002||Explain the primary challenges of developing scalable, dependable and secure distributed systems and identify these within specific contexts.||KC|
|003||Identify, synthesise and critically evaluate information regarding distributed systems paradigms, models and technologies from academic books, academic journal and secondary data.||KCPT|
|004||Critically appraise the applicability of various distributed computing principles and technologies to satisfy a given set of system requirements.||KCPT|
|005||Develop and present sound arguments to justify design decisions made during the development of distributed systems within a given context.||KCPT|
C - Cognitive/analytical
K - Subject knowledge
T - Transferable skills
P - Professional/Practical skills
Methods of Teaching / Learning
The learning and teaching strategy is designed to provide students with the knowledge, skills and practical experience covering the module aims and learning outcomes. For each teaching week, the learning and teaching methods include: a lecture, covering the key principles of distributed systems. Workshops/labs, in which students shall develop and practice their ability to synthesize, apply and evaluate distributed systems concepts within the context of realistic case studies. There will also be a revision session to support the module.
Indicated Lecture Hours (which may also include seminars, tutorials, workshops and other contact time) are approximate and may include in-class tests where one or more of these are an assessment on the module. In-class tests are scheduled/organised separately to taught content and will be published on to student personal timetables, where they apply to taken modules, as soon as they are finalised by central administration. This will usually be after the initial publication of the teaching timetable for the relevant semester.
Upon accessing the reading list, please search for the module using the module code: COM3026
The widespread use of distributed systems in everyday life ensures that the computer science skills taught in this module provide students digital skills that are both practical and hugely important when working with this type of system. Lectures provide the key underlying principles, with practical lab sessions to learn to apply these principles and work with distributed algorithms.
This module provides both theory and practical skills for working with and developing for distributed systems which are in widespread use in industry. Students will learn key models of distributed systems, how to secure these systems as well as distributed technologies such as Blockchain that are in wide use industry today.
Global and Cultural Skills
Computer Science is a global language and the tools and languages used on this module can be used internationally. This module allows students to develop skills that will allow them to reason about and develop applications with global reach and collaborate with their peers around the world.
Resourcefulness and Resilience
This module involves practical problem-solving skills that teach a student how to reason about complex hardware and software systems through combining the foundation theory taught with practical technologies for systems that are in everyday use. The principle and algorithms taught on this course can be applied to a wide range of different problems and the practical skill gained through lab work will give students the knowledge to solve new problems using these techniques.
Please note that the information detailed within this record is accurate at the time of publishing and may be subject to change. This record contains information for the most up to date version of the programme / module for the 2022/3 academic year.