The course gives practical experience in principles, languages, and tools used to construct large complex software systems, and contributes to developing a professional attitude towards software development.

A project in a group is performed, in which students of the group have different roles and responsibilities. This includes activities such as project management, development models, requirements engineering, software design, and implementation, quality assurance, configuration management, maintenance, evolution, and reengineering.