This course introduces the concepts, principles and advantages of Object Oriented programming. The course focuses on the properties and behaviour of classes and objects and how to use object-oriented programming techniques such as encapsulation, inheritance, dynamic link, and restructure to build high quality programs. Special attention is given to the life cycle of objects and classes and the basics of testing object-oriented programs. The students will practice writing object oriented programs using one of the object-oriented programming languages during lab sessions.