Objectives
The course objective is to familiarize students with the Object-Oriented Analysis, Design and Programming. The practical component of this course is based on C++.

1.0 Overview(2 hrs)
1.1. Procedural programming and issues with procedural programming
1.2. Why Object-Oriented programming
1.3. Object-Oriented concepts
1.3.1. Abstraction
1.3.2. Encapsulation
1.3.3. Inheritance
1.3.4. Polymorphism
1.4. Advantages of Object-Oriented programming

2. Introduction and History of C++(3 hrs)
2.1. Why C++
2.2. History and Evolution of C++
2.3. Features of C++

3. C++ Language basic syntax(3 hrs)
3.1. Fundamental data types
3.2. Declarations and definitions
3.3. Derived types
3.4. Standard conversions and promotions
3.5. Statements
3.6. Arrays and pointer in C++
3.7. const
3.8. Enumeration
3.9. Flow control
3.10. Comments

4. Functions (Methods) in C++(4 hrs)
4.1. Syntax of functions
4.2. Functions name overloading
4.3. Default arguments
4.4. Inline functions
4.5. Variable arguments
4.6. Return types
4.7. Parameter passing

5. Support for classes in C++(5 hrs)
5.1. Class syntax
5.2. Data Encapsulation (public, protected, private modifiers)
5.3. Inheritance
5.4. Scope resolutions operator
5.5. “this” pointer
5.6. static or class member functions
5.7. Unions in C++
5.8. Accessibility of member functions and member variables

6. Exceptions to C++ Encapsulation( 1 hr)
6.1. Friend functions
6.1.1. Overloading and friend functions
6.2. Friend classes

7. Object Initialization and Destruction(3 hrs)
7.1. Constructors – need for constructors
7.2. Syntax of constructors
7.3. Syntax of destructors
7.4. Unions and Constructors
7.5. Other Constructors
7.5.1. Copy constructors

8. Overloading Operators(3 hrs)
8.1. Operator overloading – justification
8.2. Friends vs. Member functions
8.3. Streams Operator overloading

9. Inheritance – Foundation for reuse(5 hrs)
9.1. Types of inheritance
9.2. When to use inheritance
9.3. Motivation for inheritance
9.4. Derivation of C++ classes
9.5. Scope of inherited member functions
9.6. Scope of inherited member variables
9.7. Class structure in memory
9.8. Inheritance and operator functions
9.9. Multiple inheritance
9.10. Constructor for multiply derived classes
9.11. Destructors for multiply derived classes
9.12. Virtual base classes

10. Polymorphism and Dynamic Binding(3 hrs)
10.1. Virtual Functions
10.2. Pure Virtual functions and Abstract classes

11. Input/Output( 5 hrs)
11.1. Stream based input/output
11.2. Input/Output class hierarchy
11.3. File Input/Output

12. Advanced C++ topics
12.1. Templates (3 hrs)
12.1.1. Reuse via type parameters
12.1.2. Declaring container classes
12.1.3. Template Constructs
12.1.4. Standard Template Library
12.2. Run Time Type Information (1 hr)
12.3. Namespaces ( 1 hr)
12.4. Exceptions (3 hrs)
12.4.1. What are Exceptions
12.4.2. Benefits of Exception Handling
12.4.3. Exception Handling Syntax: catch, throw and try
12.4.4. Error handling in libraries
12.4.5. Passing error handling

Laboratories:
There shall be 12 lab exercises covering features of object-oriented programming. By the end of this course each student must complete a major programming project based on OOP.

References:
1. Robert Lafore, “Object-Oriented Programming in C++”, Galgotia Publications, India.
2. Deitel & Deitel, “C++ How to Program”, 2/e , Prentice Hall
3. Navajyoti Barkakati , “Object-Oriented Programming in C++”, Prentice Hall of India

Related articles suggested by Google