Course Title: Software Engineering
Course Code: CS 216
Credit Value: 3 Credits
Contact Hours:
Lectures: 2 hours/week
Practical/Labs: 2 hours/week
Duration: 15 Weeks (One Semester)
Prerequisite: Introduction to Programming; Database Systems
1. COURSE DESCRIPTION
This course introduces students to the principles, processes, and practices of software engineering.
It focuses on how software systems are planned, designed, built, tested, deployed, and maintained using structured, iterative, and collaborative development approaches.
Students work in teams to develop a medium-scale software system, applying software engineering methods including requirements engineering, system modeling, architectural design, implementation standards, testing strategies, and software maintenance practices.
Emphasis is placed on disciplined engineering practice, documentation quality, maintainability, and real-world development workflows including version control and iterative delivery.
2. COURSE OBJECTIVES
By the end of this course, students should be able to:
Explain and compare software development life cycle (SDLC) models
Apply iterative and agile development practices in software projects
Elicit, analyze, validate, and document software requirements
Design software systems using structured and architectural models
Apply systematic testing and quality assurance techniques
Use version control systems in collaborative software development
Work effectively in software engineering teams to deliver a complete system
3. LEARNING OUTCOMES
Upon successful completion, students will be able to:
Describe core software engineering concepts and terminology
Produce professional software requirements documentation (SRS)
Model systems using UML and structured design techniques
Apply architectural patterns such as layered architecture and MVC
Implement version-controlled collaborative development workflows
Design and execute unit, integration, and system tests
Deliver a fully documented, functional team-based software project
Demonstrate understanding of software maintenance and evolution