module specification

CS6006 - Distributed, Cloud and IoT Systems (2023/24)

Module specification Module approved to run in 2023/24
Module title Distributed, Cloud and IoT Systems
Module level Honours (06)
Credit rating for module 30
School School of Computing and Digital Media
Total study hours 300
 
72 hours Scheduled learning & teaching activities
148 hours Guided independent study
80 hours Assessment Preparation / Delivery
Assessment components
Type Weighting Qualifying mark Description
Coursework 35%   Distributed system and Report. Individual programming assignment for developing of a distributed client/server system.
Coursework 35%   Cloud-based system and Report. Individual research and programming assignment for developing of a cloud-based solution.
Unseen Examination 30%   Unseen exam
Running in 2023/24

(Please note that module timeslots are subject to change)
Period Campus Day Time Module Leader
Year North Monday Afternoon

Module summary

This module equips the students with professional knowledge and skills for developing contemporary data processing systems on the desktop, on the move, on the net, in the cloud and at the edge of the computational infrastructure. It systematically introduces the principles and models of functioning of modern data processing systems – distributed, parallel, embedded, portable and wearable. For this purpose, it utilizes the recent advances in infrastructural, technological and methodological support of software development – structured, semi-structured and connected data, wired and wireless communications, containerized and remote tools, cloud and edge platforms, DevOps movements, etc.

Syllabus

Tools
• Programming Languages, Frameworks and IDEs – JavaSE, JavaEE, Eclipse
• Data Markup languages – XML, JSON, CWL
• Software Repositories – GitHb, GitLab, etc.
• Virtual Environments – Clouds, Virtual Machines, Serverless Programming, Microservices


Data
• Data Sources – Files, Databases, Messages, Streams
• Data Models – Relational, Object-oriented, Graph-based, File-based
• Data Formats – Source, Encoded, Encrypted
• Data Repositories – SQL DBMS, NoSQL DBMS, Graph DBMS, HDFS
• Data Storage and Retrieval – serial, hashed, indexed
• Data Serialization – Format-based, Encoding-based, Markup-based


Communications
• Models – Stream-oriented/message-oriented, Stateless/stateful, Synchronous/asynchronous, Unicast/Multicast, etc.
• Transport and Session Protocols – TCP, UDP, RTP, RPC, Wifi, Bluetooth
• Presentation and Application Protocols – Telnet, FTP, RTP, HTTP, IIOP, SMTP, MQTT, SSL, TTL, etc.
• IoT devices – sensors, microcontrollers and toolkits


Software Components
• Data Processing Models – Operations, Threats, Services, Processes, and Transactions
• Software Components – Modularization, Sharing and Interfacing
• Concurrency and Synchronization – Operation-based, Data-driven, Event-driven
• Transaction Processing – Isolation, Interleaving and Extending


System Integration
• Software Architectures - Multilayer, Client/server, P2P, Hybrid
• Execution Containers and Virtualisation – VM, Docker, Kubernetes
• Dataflows and Sharing – Streams, Buffers and Replication
• Process Workflows and Orchestration –Drivers, Adapters, Brokers


Security and Safety
• Identity Management – Registration, Identification, Authentication, Authorization
• Execution Control – Sessions, Logging, Tracing
• Security Protection – Network Firewalls, Antivirus software, Application Isolation
• Safety Management – Monitoring, Reporting, Error Handling, Risk Mitigation

Balance of independent study and scheduled teaching activity

The Learning and Teaching Strategy in this module combines:

• Lectures for defining concepts, describing methods and discussing alternative choices.

• Workshops for demonstrating software tools, configuring working environments, building solutions, discussing alternatives and acquiring hands-on experience. In addition to the computing equipment available in the university labs for individual work on site, the students will be provided with remote access and access to the cloud.

• Individual research for reporting of the technological research and technical solutions produced, comparing the design alternatives chosen and reflecting on the personal experience while working on the coursework.

• Blended learning through the use of Virtual Learning Environments (VLE) for setting problem scenarios, providing prepared solutions, submitting assessment materials and obtaining feedback.

• Public demonstration of software solutions for evaluation and reflection of individual practice during workshops in Computer Lab.

The students will be expected and encouraged to produce reflective commentaries on the learning activities and tasks that they carry out to complete their work and an action plan for personal development, e.g. in the form of an assessed section of their coursework report/essay.

Learning outcomes

On successful completion of this module the student should be able to:

LO1: Demonstrate understanding of different principles, infrastructure and models of complex software systems for enterprise data processing – distributed, hierarchical and service-oriented.
LO2: Design software architectures for data processing based on different information technologies, working on different platforms – desktop, portable, embedded, cloud-based and edge-based.
LO3: Interpret, transform and implement data models and software specifications written in pseudo-code, UML modelling notation and XML/JSON markup languages into working code using enterprise programming language.
LO4: Integrate existing software components, off-the-shelf products and cloud services for implementing distributed, mobile, embedded and wearable systems using suitable frameworks, design patterns, development tools and software APIs.
LO5: Consider alternative solutions for implementation of data processing systems, justify design decisions, estimate trade-offs and critically evaluate their impact at different stages of the software system lifecycle.
LO6: Undertake risk assessment and recommend appropriate security policy.

Assessment strategy

The assessment strategy in the module is based on regular assessment of the progression through studying, individual research and development of a self-contained solution of small projects requiring different software architectures, implemented using different data processing technologies, deployed on different infrastructures and fulfilling different system requirements. The practical assignment components will be used to assess items such as:

• Data Design (models, formats, protocols)
• System Design (infrastructure, components, information flows)
• Software Design (tools, software, configuration)
• Software Development (programming, containerization, distribution, synchronisation, orchestration)
• Software Integration (composition, installation, configuration, execution)
• System Security (monitoring, control, protection)

As a result, the assessment will provide chronological assessment of the entire learning process. At the same time, the holistic instruments will allow more systematic assessment of the degree of acquisition of the knowledge and skills, which will help the students build an attractive professional portfolio for the labour market.

Bibliography

• Core Textbooks:
[1] Coulouris, G., Dollimore, J., and Kindberg, T., Distributed Systems: Concepts and Design, 5th edition, Pearson (2011); ISBN: 0132143011.
[2] Marinescu, D., Cloud Computing: Theory and Practice, 3rd edition, Morgan Kauffman (2022); ISBN: ‎ 0323852777.
[3] Hanes, D., Salgueiro, G., Grossetete, P., et al., IoT Fundamentals: Networking Technologies, Protocols, and Use Cases for the Internet of Things, Cisco Press (2017); ISBN: 9781587144561.

• Additional Texts:
[4] Davis, A., Bootstrapping Microservices with Docker, Kubernetes, and Terraform: A Project-Based Guide, Manning Publications (2021); ISBN: ‎1617297216.
[5] Bernd Ruecker, Practical Process Automation: Orchestration and Integration in Microservices and Cloud Native Architectures, O'Reilly Media (2021); ISBN: 149206145X.

• Websites:

The Java EE Tutorial by Oracle

https://docs.oracle.com/javaee/7/JEETT.pdf

Security Engineering by Ross Anderson

http://www.cl.cam.ac.uk/~rja14/book.html

IEEE Distributed Systems Online by IEEE Computer Society

http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=8968

• Journals:
IEEE Transactions on Parallel and Distributed Systems (TPDS), Publisher: IEEE Computer Society, ISSN: 1045-9219

Electronic Databases (available from the University Library)
ACM Digital Library
IEEE Xplore/IET Digital Library