CS 410 Software Engineering • 5 Cr.


The course teaches the fundamental concepts and principles of software engineering, its tools and techniques, and methods for building reliable software systems. This course introduces all phases of the lifecycle of a software system, including requirements elicitation and analysis, design, implementation, integration, testing, verification and validation, deployment, and maintenance. Prerequisite: CS 300 and admission to BS CS program, or instructor's permission.


After completing this class, students should be able to:

  • Describe the relative advantages and disadvantages among several major process models (e.g., waterfall, iterative, and agile) 
  • Differentiate among the phases of software development 
  • Track the progress of some stage in a project using appropriate project metrics 
  • Compare simple software size and cost estimation techniques 
  • Identify both functional and non-functional requirements in a given requirements specification for a software system 
  • Use a design paradigm to design a simple software system, and explain how system design principles have been applied in this design 
  • Describe and distinguish among the different types and levels of testing (unit, integration, systems, and acceptance) 
  • Choose appropriate tools, methods, and approaches for a given development environment