Cloud Computing Systems


* Understand the fundamentals of Cloud computer systems.
* Learn the different cloud service models (IaaS, PaaS, SaaS). Examples, characteristics and implementation.
* Know the data center infrastructures and the restrictions imposes.
* Know the services available in cloud platforms, how they  work and can be used.
* Know resource virtualization techniques.

Skills and competences
* Identify the classes of applications that benefit from Cloud computing systems.
* Create solutions that take advantage of Cloud services and resources.
* Evaluate solutions developed for Cloud platforms.

General characterization





Responsible teacher

Nuno Manuel Ribeiro Preguiça


Weekly - 4

Total - 56

Teaching language



The student must have good programming skills,  and knowledge of distributed  systems.

Some knowledge of parallelism is beneficial.  


Cloud Computing: Theory and Practice, Dan C. Marinescu, Morgan Kaufman-Elsevier, 2013.

The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines, Luiz André Barroso, Jimmy Clidaras, Urs Hölzle, Synthesis Lectures on Computer Architecture, Morgan & Claypool Publishers, 2013.

Selected conference and/or journal papers.

Teaching method

In lectures the various topics of the syllabus are explained and discussed. The approach consists in  presenting, for each topic, the motivation/problem and solutions. This presentation also discusses the constraints that led to a given solution and possible alternatives. In addition, examples are given of how to use the solutions presented for application development.

Laboratory classes follow the course projects closely, giving students the experience of how the concepts introduced in lectures can be applied in practice. Thus, lab class present examples of the various topics, making a connection to its use in the  course projects.

Evaluation method

Two tests - 25% each
Minimum grade for approval: 8.0

Project: 40% : groups of 2 students
Minimum grade for frequency: 8.0

Project 2: 10%


Subject matter

1. Introduction
1.1 Challenges and motivation
1.2 Models
1.3 Building blocks
2. Storage services
2.1 Block storage and filesystems
2.2 Cloud databases: key-value stores and databases
3. Caching services
3.1 Application caches at the DCs
3.2 Content-distribution networks
4. Towards serverless computing
4.1 Support for micro-services
4.2 Function-as-a-Service
5. Processing data
5.1 Queuing services
5.2 Batch processing services
5.3 Intro to stream processing services
6. IaaS
6.1 Virtualization
6.2 Containers
6.3 Deployment in clusters (Kubernetes)
7. Networking
7.1 Virtual networks
8. Security
8.1 Authentication services
8.2 Privacy and security
9. Infrastructure
9.1 The physical data center
9.2 Advanced cloud architectures: hybrid cloud
9.3 Edge computing


Programs where the course is taught: