This course is aimed at helping students build up an understanding of how to develop a software system from scratch by guiding them through the development process and giving them the fundamental principles of system development. The course will initiate students to the different software process models, Unified Process(UP) and Agile Development, project management, software requirements specification, systems analysis and design as a problem-solving activity, key elements of analysis and design, and the place of the analysis and design phases within the system development life cycle, Introduction to Unified Modeling Language (UML), software architecture, object-oriented analysis and design, design patterns and testing.