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
- Compulsory pre-requisite courses for bachelor’s students:
- Student note:
- You must apply via the TUM Matching System.
- In addition, the students must fill out the application form: https://collab.dvb.bayern/display/TUMcsel/Course+Application+Form+-+SS25
- 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: Tuesday, 04.02.2025, 14:00
- Zoom link: https://tum-conf.zoom-x.de/j/69624627826?pwd=i7mgdiZQpK3IuY7JIViK5fL9h6G4HP.1
- Meeting ID: 696 2462 7826
-
Passcode: 232554
- Date and time: Tuesday, 04.02.2025, 14:00
- Contact:
- We use our Slack workspace: https://join.slack.com/t/ls1-courses-tum/shared_invite/zt-2xvxt5ngz-iHPboVBvkGGtQMGp80P83Q
- Please do not contact staff members using their email addresses
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:
- Exploration of software deployment models in the cloud, such as Baremetal, Virtual machines, Containers, and Serverless.
- Insights into system design requirements, software architectures in the cloud, and microservices.
- Deep dive into system design challenges, modularity, layered architectures, and data management.
- Understanding security engineering, reliability, availability, performance, and design patterns.
- Study of concurrency, scalability, and other design patterns.
- Learning software testing methodologies, including unit testing, mock testing, and automated large-scale testing.
- Overview of program analysis, including faults, failures, and role of dynamic and static analysis.
- Examination of software management, deployment, monitoring, and cloud systems monitoring.
- 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.
Recommended reading
For each programming assignment, we will present the necessary background as lecture slides with detailed and comprehensive references.
Course Tools and Material
- Artemis Course
- Wiki TUM Space
Course Staff
Manos Giortamis
Course Lead