By the end of the course, the student will be able to understand principles, concepts, methods, and techniques of the software engineering approach. The student will apply his/her knowledge and skills to organize and develop a medium-sized software project that satisfy requirements, is reliable, easy to understand, modify and maintain.
To achieve these objectives, the student must acquire a body of knowledge, skills and attitudes.
As regards of knowledge, at the end of the course the student will know:
What is software engineering.
The set of software processes and software processes models.
Different ways of expressing software requirements.
System models that may be developed during the requirements engineering process.
Models of software architectures.
Main software design patterns.
Techniques used to test software.
In terms of capabilities, it can be classified into two groups: specific and generic skills.
As for specific skills after the course, students will be able to:
Planning a complete software project.
Analyze and formalize the software requirements of a project.
Develop and analyze models of software.
Design the software architecture of a project.
Using the data structures and programming techniques suitable for programming tasks that the software requires.
Encourage the maintenance of the system at all stages of development through proper documentation.
Verify and validate the software developed.
Ensure software quality.
In terms of general skills, in the course we will work:
The ability to use software engineering techniques to create effective software products.
The ability to cope with restrictions arising from human resources, time and costs.
The ability to work in a software development team.
The ability to public present and defend the developed solutions.
In terms of attitudes, the student after completing the course should have:
A critical attitude regarding the suitability of different techniques and tools that can be applied to development of a software system.
Ethical values to his work as a software developer.
A proactive attitude towards work.
An attitude of cooperation and teamwork.