Software engineering is based on computer science in the same way other engineering disciplines are based on physical or life sciences. However, it adds an emphasis on issues of requirements, process, design, measurement, analysis and verification, providing a strong foundation in engineering principles and practice as applied to software development.
Software engineering students gain knowledge and skill in all aspects of the software development life cycle, including requirements elicitation and analysis, software architecture, design, construction and verification. They learn to work within and to continuously improve a defined software development process, with the aim of producing high-quality software predictably and efficiently. To provide a basis for this software engineering practice and process, students are grounded in the fundamentals of computer science, including discrete mathematics, data structures, algorithms, computer organization and operating systems.