Introduction and basic concepts for software development. Abstraction/models and division. Life cycle for software. Unified process. Unified Modeling Language (UML) Specification and analysis of requirements. System design. Object design. Design patterns: Refactoring. Transformation of models to code. Testing. Agile software development and agil emodelling. The bases of extreme programming. DevOps methods.
The practical part of the course contains exercises and a small software development project.