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.
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. You will learn: Understand algorithmic test generation techniques and their use in developer testing and continuous integration. Understand how to automatically generate test cases with assertions. Have a working knowledge and experience in static and dynamic generation of tests. Have an overview knowledge in search-based testing and the use of machine learning for 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 course includes four modules: Introduction to functional safety; knowledge that give increased understanding of the relationship between Embedded systems / safety-critical system / accidents / complexity / development models (development lifecycle models) / certification / “the safety case”. Analysis and modelling methods; review of analysis and modelling techniques for the development of safety-critical systems. Verification and validation of safety critical software, methods and activities to perform verification and validation. Architectures for safety critical systems. Safety as a design constraint.
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.