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 | ||||||||||||||||
|
|||||||||||||||||
Assessment components |
|
||||||||||||||||
Running in 2023/24(Please note that module timeslots are subject to change) |
|
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