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, develop, and maintain 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 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 8 lectures from the EIST course.

In general, there will be two teams: the first will create and develop new exercises based on the lecture material. The second team will maintain, test, and fix already existing exercises in Artemis LMS.

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

Online information

Preliminary meeting slides


Manos Giortamis


Francisco Romão


Oğuzcan Kırmemiş


Patrick Sabanic