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:
    • You must apply via the TUM Matching System.
    • In addition, the student must fill the application form
    • Compulsory enrollment after two weeks of the matching outcome; students who fail to deregister in this period will be registered for the exam.
  • Preliminary meeting:
    • Date and time:
    • Zoom link:
  • Contact:
    •  We use our Slack workspace: 
    • Please do not contact staff members using their email addresses

Content

Software engineering is the application of engineering principles to the development of software. It’s a systematic approach that involves the entire lifecycle of software creation, from defining requirements and designing the architecture to coding, testing, deployment, monitoring, and ongoing maintenance. 

Almost all modern software systems are designed for and deployed in the cloud. 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 to create valuable educational content.

The key topics to be covered in the course include: 

  • Cloud software architectures: Investigating different types of cloud software architectures, including client-server, layered, monolithic, microkernel, and microservice architectures. 
  • Cloud system design and implementation: Deep dive into system design challenges, including, modularity, data management, performance, concurrency, scalability, security, reliability, and availability.
  • Software testing: Designing software testing methodologies, including unit testing, integration testing, mock testing, and automated large-scale testing (Fuzzing).
  • Program analysis: Tools and techniques for program analysis, including static analysis and dynamic analysis.
  • Software management, build systems, and DevOps:  Examination of software configuration management, build systems, release management, and DevOps pipelines (continous*). 
  • Cloud software deployment models and monitoring: Exploration of software deployment models in the cloud, such as Baremetal, Virtual machines, Containers, and Serverless. Examination of large-scale cloud software monitoring and maintenance. 
  • Software quality: Reflections on software quality, code refactoring, and code reviewing.

Course Tools and Material

Course Staff