Object oriented programming (OOP) is a fundamental programming paradigm that structures code into classes and objects. Key concepts of OOP include attributes and methods, inheritance, modules and packages. OOP makes code reusable and easy to maintain by following concepts like DRY. As an example, students are asked to create a Bear class with attributes and methods, with a PolarBear subclass.