• Lecture 1
  • Object-Oriented Programming Concepts: Introduction, comparison between procedural programming paradigm and object-oriented programming paradigm



  • Lecture 2
  • Basic concepts of object-oriented programming concepts of an object and a class, interface and implementation of a class, operations on objects, relationship among objects



  • Lecture 3
  • Abstraction, encapsulation, data hiding, inheritance, overloading, polymorphism, messaging



  • Lecture 4
  • Classes and Objects: Specifying a class, creating class objects, accessing class members



  • Lecture 5
  • Access specifiers, static members, use of const keyword, friends of a class, empty classes, nested classes



  • Lecture 6
  • Local classes, abstract classes, container classes, bit fields and classes



  • Lecture 7
  • Inheritance: Introduction, defining derived classes, forms of inheritance, ambiguity in multiple and multipath inheritance



  • Lecture 8
  • Virtual base class, object slicing



  • Lecture 9
  • Overriding member functions, object composition and delegation, order of execution of constructors and destructors.



  • Lecture 10
  • Pointers and Dynamic Memory Management: Declaring and initializing pointers, accessing data through pointers, pointer arithmetic



  • Lecture 11
  • Memory allocation (static and dynamic), dynamic memory management using new and delete operators



  • Lecture 12
  • Pointer to an object, this pointer, pointer related problems - dangling/wild pointers, null pointer assignment, memory leak and allocation failures





  • Lecture 13
  • Constructors and Destructors: Need for constructors and destructors, copy constructor



  • Lecture 14
  • Dynamic constructors, explicit constructors, destructors



  • Lecture 15
  • constructors and destructors with static members, initializer listsconstructors and destructors with static members, initializer lists



  • Lecture 16
  • Operator Overloading and Type Conversion: Overloading operators, rules for overloading operators



  • Lecture 17
  • Overloading of various operators, type conversion—basic type to class type



  • Lecture 18
  • Class type to basic type, class type to another class type



  • Lecture 19
  • Virtual functions & Polymorphism: Concept of Binding—Early Binding and late Binding



  • Lecture 20
  • Virtual functions, pure virtual functions



  • Lecture 21
  • Abstract classes, virtual destructors