Introduction to Software Engineering as a Discipline. Software Life Cycles. Software Requirement Specification and Analysis, Object Oriented Analysis and Design, Design patterns, Architectural patterns and scaling concern, Software Quality Assurance, Project management, Testing.