This document discusses object oriented software engineering and programming. It outlines the agenda which includes an introduction to procedural and object oriented approaches, comparing the two, and reviewing object oriented concepts, analysis, design and development. Key reasons given for using object oriented programming are that it makes code maintenance and modification easier through inheritance, improves understandability and ease of development for new programmers, and increases efficiency by freeing up unused memory. Core object oriented concepts covered are objects, classes, abstraction, encapsulation, inheritance, constructors, destructors, and polymorphism.