Understand the domain and the basic terminology of Software Engineering.
Analyze widely used software process models.
Compare plan-driven and agile approaches to software development.
Distinguish user requirements and system requirements.
Distinguish functional requirements and different kinds of non-functional requirements
Elaborate system dependability requirements, including reliability, availability, safety and security.
Compose a software requirement specification that is verifiable, correct, consistent, complete and unambiguous.
Apply UML for modeling various aspects of computer-based systems using a state-of-art tool.
Construct a requirements model for a computer-based system using UML.
Construct a design model for a computer-based system using UML.
Apply the relevant standard for software requirement specification, e.g. IEEE 830.
Apply the relevant standard for software design description, e.g. IEEE 1016.
Analyze system architecture from multiple viewpoints.
Assess candidate architectural patterns and design patterns for a given design problem.
Distinguish different levels of testing.
Select testing techniques appropriate for a given test objective.
Understand the fundamental concepts of quality as related to software, such as process quality and product quality, along with related standards.
Understand software metrics and their relation to product quality.
Discuss the processes involved in evolution of software.
Identify ethical issues in a given situation, using the terminology of ACM/IEEE SECEPP.
Understand IPR concepts closely related to software industry, including copyrights and patents.