The course is designed to provide the basic knowledge of object oriented programming (OOP) and its uses using java. Broadly it covers the basic concepts of object oriented programming such as, classes, objects, abstraction and encapsulation; inheritance, polymorphism, OOP design basics: finding objects, finding classes, classification techniques, class roles, finding interaction, etc. as well as practice on the techniques and idioms of OOP.