Cloud Software Engineering – SS 25

Course Information

  • Language: English
  • Type: Practical Course
  • Module: IN0012, IN2106 
  • ECTS Credits: 10
  • Maximum number of students: 24 students
  • Prerequisites:
    • 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
      • IN2258: Middleware and Distributed Systems
  • Student note:
  • Preliminary meeting:
  • Contact:

Content

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

Objectives

  • 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.

Course Tools and Material

Course Staff

Manos Giortamis

Course Lead