Cloud Software Engineering

Course Information

  • Language: English
  • Type: Practical Course (Lab)
  • Module: IN0012, IN2106
  • SWS: 6
  • ECTS Credits: 10
  • Is it for bachelors/masters or both: Both
  • Maximum number of students: 24
  • Student notes:
    • Compulsory enrollment after two weeks of the matching outcome; students who fail to deregister in this period will be registered for the exam.
    • Students need to apply via the application form.


The lab course on “Cloud Software Engineering” offers a practical experience centered on developing and managing cloud-based software systems. Throughout the semester, students will design and develop programming exercises for the EIST course for bachelor students. These exercises will be drawn from the EIST lecture slides provided by the course organizers, allowing students to learn the cloud computing concepts and apply them in creating valuable educational content.

The key topics to be covered in the course include:

  1. Exploration of software deployment models in the cloud, such as Baremetal, Virtual machines, Containers, and Serverless.
  2. Insights into system design requirements, software architectures in the cloud, and microservices.
  3. Deep dive into system design challenges, modularity, layered architectures, and data management.
  4. Understanding security engineering, reliability, availability, performance, and design patterns.
  5. Study of concurrency, scalability, and other design patterns.
  6. Learning software testing methodologies, including unit testing, mock testing, and automated large-scale testing.
  7. Overview of program analysis, including faults, failures, and role of dynamic and static analysis.
  8. Examination of software management, deployment, monitoring, and cloud systems monitoring.
  9. Reflections on software quality, code refactoring, and code reviewing.

Through this course, students will not only gain a comprehensive understanding of cloud software engineering but also contribute to creating an engaging and effective learning environment for their fellow students.

Previous knowledge expected

  • Compulsory pre-requisite courses for bachelor’s students:
    • IN0006: Introduction to Software Engineering 
    • IN0009: Basic Principles: Operating Systems and System Software
    • IN0010: Introduction to Computer Networking and Distributed Systems
  • Preferred pre-requisite courses:
    • IN2259: Distributed Systems OR
    • IN2258: Middleware and Distributed Systems


  • Understand the architecture of cloud hardware and software systems.
  • Apply principles of system design, modularity, and data management.
  • Develop secure, reliable cloud systems using design patterns.
  • Implement effective software management and testing strategies.

Teaching and Learning Methods

This course is a project-based learning course with three main phases. It offers students the opportunity to apply their theoretical knowledge gained from the lectures to practical programming tasks. The project tasks will be based on the content of 9 lectures from the EIST course.

  • Proposal Phase I:: Each group of students will be assigned one lecture. Based on the lecture, each group will create a proposal for 3 programming exercises that align with the lecture’s content. This proposal will include the objective of the exercises, requirements, and expected outcomes.
    • Grading criteria for the proposal phase:
      • Clarity and relevance of the exercise objective.
      • Comprehensiveness and specificity of the exercise requirements.
      • The practicability and relevance of the expected outcomes
  • Creation Phase II: Following the approval of the proposal, the groups will create the exercises in the Artemis LMS. This includes writing unit tests for automated grading. The programming exercises should be a reflection of the concepts taught in the corresponding lecture.
    • Grading criteria for the creation phase:
      • Adherence to the approved proposal.
      • Quality of the written code and unit tests.
      • Usability and clarity of the instructions in the Artemis LMS.
      • Coverage and effectiveness of unit tests for automated grading.
  • Peer Review Phase III: Upon completion of the creation phase, each group will review the exercises created by 3 other groups. The groups will grade the exercises based on the given criteria.
    • Grading criteria for the review phase:
      • The depth and clarity of the feedback provided.
      • Fairness and accuracy of the grading.
      • Constructiveness and relevance of the suggestions for improvements.

For each programming assignment, we will present the necessary background as lecture slides with detailed and comprehensive references.

Online information

Preliminary meeting slides

  • The preliminary meeting was on Tuesday, 07/06/2023, 1:00 PM on Zoom
  • Slides


Peter Okelmann


Manos Giortamis


Francisco Romão