Software Engineering (CS 360)

This course offers general introduction to software engineering: Practical problems of specifying, designing, and developing and testing software systems. It introduces students to the practical problems of specifying, designing, and developing and testing software systems by discussing concepts such as software processes and agile methods, and fundamental software development activities, from software specification through to system testing and maintenance. UML (Unified Modeling Language), the standard tool for expressing designs in software engineering, will be introduced.

Course Objectives

This course will equip students with tools and techniques required to design reliable software systems. In this course, students are expected to develop ‘functional’ software system by following a software development lifecycle. Key topics include:

  • Introduction to software development life cycle models including classical and agile models
  • Introduction to the software requirements engineering process, including requirements elicitation, specification, and validation
  • Introduction to software design with the focus on architectural design including different software architecture models
  • Introduction to software testing and system reliability including testing methodologies and code inspections
Learning Outcomes

Students will be able to:

  • Understand key software engineering practices and design principles for producing quality software systems
  • Understand software development life cycle models including linear and agile models
  • Work in a small (collaborative) teams to develop a small-sized software system from conceptualization to completion, including requirements elicitation and specification, system modeling, system design, implementation, unit and system testing, and configuration management
  • Propose and new software system or improvements in the existing one based on the user requirements
  • Design a software system to a given problem using one or more design patterns
  • Model the structure and behavior of a (proposed) software system using the standard UML diagrams
  • Implement the design of a software system in a programming language (web or a mobile framework)
  • Make concise and coherent technical documents on both the technical aspects (requirements – SRS, design – SDS, quality assurance – SQAP) and the managerial aspects (planning and scheduling)
  • Make presentations to explain their ideas to diverse stakeholders (end users, team members, business manager and technical managers)
  • Apply relevant ethical considerations while designing and developing software systems