Cloud-native applications are designed to capitalize on the scalability and flexibility of the cloud. In contrast to traditional monolithic applications, cloud-native applications are built using multiple, independent microservices that are deployed in cloud environments. Cloud-native development takes an agile approach to creating new applications. Using a DevOps-based continuous delivery model, software development teams can quickly, iteratively and automatically add new features to an application. The course will provide students with both theoretical and practical skills to develop software systems which use Infrastructure-as-a-Service (IaaS) in order to run applications on servers that can be flexibly provisioned on demand.