Applications 2022-12-10
COURSE DESCRIPTION
The information and communication technology (ICT) sector is responsible for approx. 1.8-2.8% of the global greenhouse gas (GHG) emissions in 2020, and software is both part of the problems and the solutions. Traditional software engineering principles and techniques do not consider the climate, environment, and sustainability aspects in building and using software for any purpose. We, software engineers, developers, researchers, climate scientists, and various other related stakeholders, need to think about how we can reduce the carbon footprint due to building and using software-intensive systems.
Green and sustainable software engineering is an emerging concept that can help reduce the carbon footprint related to software. In this introductory course, we will introduce the concept of green and sustainable software engineering and the engineering process to build green and sustainable software.
Topics
You will learn
By the end of the course, you will be able to: analyze the green and sustainability issues in traditional software engineering, identify and incorporate key elements to be included in the software engineering process to make the software green and sustainable, and use techniques to make your software code energy efficient.
Who is the course for?
This course is designed for those who are software developers, managers and software related policy makers, or have knowledge about software development, and want to consider the green and sustainability aspects in their everyday life. Also, this course will be useful for computational scientists who build green software and want to know more about these aspects in software engineering. However, this is an introductory course, and it will show a path for life-long learning to build more in-depth knowledge in each concept introduced in this course.
In contrast to learning how to do manual testing, in this course you will learn how to generate tests automatically in the sense that test creation satisfying a given test goal or given requirement is performed automatically. This course provides an understanding of automating software testing using program analysis with the goal of intelligently and algorithmically creating tests. The course covers search-based test generation, combinatorial and random testing while highlighting the challenges associated with the use of automatic test generation.
This course deals with model-based testing, a class of technologies shown to be effective and efficient in assessing the quality and correctness of large software systems. Throughout the course the participants will learn how to design and use model-based testing tools, how to create realistic models and how to use these models to automate the testing process in their organisation.
The aim of this course is to provide participants with the principles behind model-driven development of software systems and the application of such a methodology in practice. Modelling is an effective solution to reduce problem complexity and, as a consequence, to enhance time-to-market and properties of the final product.
The purpose is to give the students an overview of issues and methods for development and assurance of safety-critical software, including details of selected technologies, methods and tools.
The aim of this course is to give students insight about certification and about what it means to certify/self-assess safety- critical systems with focus on software system and to create a safety case, including a multi-concern perspective when needed and reuse opportunities, when appropriate.
This course provides an understanding of the fundamental problems in software testing, as well as solid foundation in the practical methods and tools for a systematic state-of-the-art approach to testing of software.