Object Oriented Programming is a programming paradigm that uses objects and their interactions to design applications and computer programs. The document discusses the limitations of procedural programming and how object oriented programming aims to address these. It introduces key concepts of OOP like classes, objects, encapsulation, inheritance and polymorphism. Classes act as a blueprint to create real objects with data and behaviors. The document provides examples of defining empty classes and creating multiple objects in Python.