Skip to main content

Cloud Computing


  • Credit value: 15 credits at Level 7
  • Module convenor and tutor: Stelios Sotiriadis
  • Assessment: a programming task and report (30%) and two-hour examination (70%)

Module description

This module introduces the concepts of distributed computing systems, scalability and development and configuration of complex large scale systems. You will learn how to develop and deploy modern applications on the cloud.

The module builds on the material taught in related modules such as Principles of Programming of the MSc Data Science programme and Programming in Java of the MSc Computer Science. If you are taking this module you are assumed to have excellent programming knowledge already.

You will be introduced to various modern tools and technologies, including the use of virtual machines and containers, the configuration of distributed systems, the deployment of NoSQL systems, and the development of RESTFul services. The module uses a mix of Node JS and Python for cloud native application development.

You should have excellent knowledge of Python, which is a requirement for various tutorials. The module will teach Node JS at a fast pace; thus, you should expect to learn fast. Finally, the module concludes the development of cloud-native applications using modern tools such as Kubernetes.

This is a highly technical module with a heavy programming lab schedule. It is highly technical and includes various tutorials on deploying and using modern big data tools, including public cloud providers such as the Google Cloud Platform and Microsoft Azure, and the deployment of custom Node JS applications and microservices using Docker and Kubernetes.

Indicative module syllabus

  • Introducing cloud and cloud-native applications
  • Using Linux environments and command line interfaces
  • Introducing cloud services, virtualisation, web services, REST and authorisation protocols
  • Using Node JS to develop micoservies and RESTFul APIs
  • Introducing cloud data storage systems and NoSQL systems for microservice development
  • Using messaging systems for distributed application development
  • Introducing container systems and distributed protocols and systems configuration
  • Introducing distributed systems approaches and algorithms such as the byzantine fault tolerance, logical clocks, Paxos, Raft and others
  • Deploying and scaling cloud applications using distributed orchestrators such as Kubernetes

Learning objectives

By the end of this module, you will be able to:

  • understand complex distributed computing systems algorithms
  • use Linux systems and the command line interface
  • develop microservices following the RESTFul architecture using Node JS and distributed databases
  • deploy and configure containerised systems (e.g. using Docker)
  • develop cloud native applications on the cloud using containarised environments and orchestrators
  • conceptualise architectures for cloud native applications.