We introduce the most important aspects of software engineering.Motivation and history of software engineeringLifecycle models for software developmentRequirements engineeringRequirement notationsSoftware modellingSoftware analysisDesign patternsTestingSoftware qualityAgile principlesOpen Source SoftwareAfter completion students will be able toCompare and evaluate software lifecycle modelsRead, create, and assess the quality of requirementsRead common software modelling notationsEvaluate and select appropriate software testing strategiesUnderstand principles of OSS