The focus of this course is testing in adaptive and lean software development processes. The objective is to equip professional test engineers with an understanding of the organizational and technical principles of such processes, and how these principles can be supported by appropriate testing techniques and tools.
This course aims to present the most industry-relevant techniques in the area of architectural design and provide the means to document software architectures with standards like UML. It also provides the participants with the necessary knowledge to reduce the technical debt in the software development projects they work on. Moreover, the course has a hands-on approach, which translates into actionable know-how that is relevant to the professional practice of software design.
The course gives an overall perspective of agile and lean development in a software-developing organization. Agile methods in project organisations constitute only one step towards the realization of an adaptable, quick and efficient product development organization. By adapting lean principles (the origin of agile methods) in the entire product development chain, from product management and requirements engineering to delivery and support, true flexibility and efficiency can be achieved without sub-optimization.
The mobile and connected world of today generates a large amount of data that needs to be managed, analysed, and linked. This is often done on the cloud. The development, deployment, and management of this is called Cloud Computing. The purpose of this course is to offer a wide background about designing, developing, deploying, testing, and monitoring a cloud solution, specifically with a focus on big data problems.
The purpose of this course is to identify, analyze and experiment with the most common web application and web service vulnerabilities and different methods for avoiding them.
The purpose of this course is to learn and to better understand humans that are key in making software projects successful. It includes an understanding of behaviour and social aspects of humans as individuals or groups that participate in and drive software engineering. This course complements the technology and process focus that dominates the software engineering area today. The focus is on the individuals and groups in software development and briefly cover results at the organizational level. Those that participate in this course will gain knowledge that will help them to better cater the needs of their colleagues as well as employees, build on their strengths as well as overcome their weaknesses, and in turn it helps increase the chances of running successful software projects.
The aim of this course is to provide participants with the fundamental principles of dependability and fault tolerance, as well as with the main practical methods and strategies for design of fault-tolerant embedded systems.
This course focuses on distributed projects and work in distributed teams, in which software development activities are carried out in multiple locations, and often in different countries. The overall goal of this course is to equip software professionals taking the course with the knowledge of fundamental differences of distributed projects, including outsourcing, in comparison with collocated development and skills necessary to overcome the associated challenges. The course will cover a set of practices useful for participating in, organizing and managing distributed projects.
The purpose of this course is to learn to initiate and conduct software process improvement using an evidence-based approach. The focus is on agile/lean practices and quality in software development organizations. Those that participate in the course will gain knowledge on the steps for process improvement. This includes the steps involved from identifying areas of potential improvement, proposing new ways of working, and analysing and reporting the results. Participants will also get an understanding of the methods and tools for measuring, evaluating and feedback processes and process improvements.
The purpose is to equip software engineers with an understanding of challenges of “scale” when testing — in terms of the size and complexity of both the software system and the organization within which the testing activities occur — and experience of specific testing techniques and tools that address them.
The rapid development of digital technologies and advances in communications have led to gigantic amounts of data with complex structures called ‘Big data’ being produced every day at exponential growth. The aim of this course is to give the student insights in fundamental concepts of machine learning with big data as well as recent research trends in the domain. The student will learn about problems and industrial challenges through domain-based case studies. Furthermore, the student will learn to use tools to develop systems using machine-learning algorithms in big data.
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 aim of the course is to introduce the participants into methods and tools for verifying systems that need to react to external stimuli. The methods use system models with precise formal semantics and will span model-checking as well as deductive verification. A set of simple examples as well as real-world applications will be used throughout the course to illustrate the methods and their tool support. The objective of the course is to understand the underpinning theories of formal verification, and learn how to apply tool support in order to verify system models.
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 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 organization.
The course consists of two parts: For the regression test selection part, the purpose is to enable participants get an in-depth understanding of techniques for selecting test cases that should be executed following changes to the software under test. For the software fault prediction part, the purpose is to use software fault prediction models as a way to provide quality estimates using measurements from design and testing processes.
The course will further discuss methodology of building simple software fault prediction models and highlight its use.
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.
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 aims to give students an introduction to the concepts and issues of science theory, as well as a basic knowledge of research methods in science and technology, especially computer science. Students become acquainted with the scientific language by reading and summarizing a number of scientific papers. Information retrieval and a source- critical attitude are practiced when writing the scientific article that is written and presented during the course. The students develop their analytical skills and critical thinking as they review and oppose others’ articles.
The course aims to provide students an opportunity to develop skill in experience design and design thinking. The Usability and User Experience course focuses on the design process, techniques and methods to design and produce digital artifacts with desirable experiential qualities.