Edit Page

Course Syllabus

CPIT-251 Software Engineering (I)

Credits: 3 credit hours Prerequisite: CPIT-250

Description

The objective of this course is to study software engineering principles and techniques used in the specification, design, and testing of software systems. Major software development methodologies are reviewed including requirements, analysis and specification, design, testing, and documentation.

Course Learning Outcomes

By completion of the course the students should be able to:

  1. Describe the need for and importance of software engineering and its objectives.
  2. Differentiate between the various activities involved in software engineering process.
  3. Discover how to develop software as part of a software team.
  4. Decide which architecture is suitable for a given non- functional requirements.
  5. Distinguish between different distributed application architecture models.
  6. Introduce object-oriented software design using the UML and highlight important implementation concerns.
  7. Introduce software testing and software testing processes.
  8. Explain why software evolution is such an important part of software engineering.
  9. Describe the challenges of maintaining a large base of software systems, developed over many years.
  10. Introduce software configuration management processes and tools.
  11. Illustrate the reuse-driven software engineering.
  12. Describe an approach to software reuse based on the composition of standardized, reusable components.
  13. Contrast between two tier and three tier client server architecture.
  14. Introduce distributed systems engineering and distributed systems architectures.
  15. Distinguish between different distributed application architecture models.

Textbook/References

  • Roger Pressman, Bruce Maxim, , “Software Engineering: A Practitioner’s Approach”, McGraw-Hill Education; 8 edition (2014-01-23); ISBN-13 9780078022128; ISBN-10 0078022126

Topics Coverage & Durations

TopicsWeeks
Introduction to software engineering (Chapter 1)1
Software Processes (Chapter 2)1
Agile Software Development (Chapter 3)1
Architectural Design (Chapter 6)1
Design and Implementation (Chapter 7)1
Software Testing (Chapter 8)1
Software Evolution (Chapter 9)1
Configuration Management (Chapter 25)1
Software Reuse (Chapter 15)1
Component-based software engineering (Chapter 16)1
Distributed software engineering (Chapter 17)1

Grading

  • Assignments: 10%
  • Group Project: 30%
  • Midterm exam: 30%
  • Final exam: 30%