Course Title: Object-Oriented Programming (OOP) using C++
Credit Hours: 4 (Theory: 3, Lab: 1)
Prerequisites:
Introduction to Programming
Basic knowledge of procedural programming (preferably in C or another language)
Course Level: Undergraduate (offered in the second semester)
Course Type: Core Course for Cyber Security, Computer Science, Software
Engineering, and Information Technology Programs
Course Description
This course introduces students to Object-Oriented Programming (OOP) using C++. It covers
core OOP principles, including encapsulation, inheritance, polymorphism, and abstraction, and
provides students with hands-on experience in implementing real-world problems using these
techniques. Students will also learn about advanced features of C++ like templates, exception
handling, and file handling, along with the Standard Template Library (STL).
Course Learning Objectives (CLOs)
By the end of the course, students should be able to:
1. Understand and apply object-oriented programming concepts like classes, objects,
inheritance, polymorphism, and encapsulation.
2. Implement software solutions using C++ that reflect real-world applications of OOP.
3. Analyze and design object-oriented programs using appropriate design patterns.
4. Utilize advanced features of C++ such as operator overloading, templates, exception
handling, and file I/O.
5. Employ the Standard Template Library (STL) to implement complex data structures.
Corse Learning Outcomes (Aligned with NCEAC/HEC Guidelines)
Upon successful completion of the course, students will be able to:
1. CLO1: Demonstrate understanding of the basic concepts of Object-Oriented
Programming.
2. CLO2: Design and implement solutions to moderately complex problems using OOP.
3. CLO3: Apply best practices for code organization, modularity, and reuse in object-
oriented programming.
4. CLO4: Work effectively in teams to develop small to medium-scale projects using C++.
Course Outline
Week 1: Introduction to Object-Oriented Programming (OOP) Concepts
Introduction to Programming Paradigms (Procedural vs. Object-Oriented Programming)
Key Concepts: Class, Object, Abstraction, Encapsulation, Inheritance, Polymorphism
Overview of C++ and Basic Syntax
Introduction to Integrated Development Environment (IDE) for C++
Week 2: Classes and Objects
Defining Classes and Creating Objects
Member Functions and Data Members
Access Specifiers (public, private, protected)
Constructors and Destructors
Week 3: Encapsulation and Data Hiding
Importance of Encapsulation
Getters and Setters
Controlling Access to Class Members
Practice on Data Hiding and Encapsulation
Week 4: Overloading and Friend Functions
Function Overloading
Operator Overloading (Unary and Binary Operators)
Friend Functions and Friend Classes
Assignment on Operator Overloading
Week 5: Inheritance
Introduction to Inheritance (Single and Multiple Inheritance)
Types of Inheritance (Public, Private, Protected)
Constructors and Destructors in Inheritance
Base and Derived Class Relationship
Lab on Inheritance Implementation
Week 6: Polymorphism and Virtual Functions
Compile-Time Polymorphism (Method Overloading and Operator Overloading)
Runtime Polymorphism (Virtual Functions and Abstract Classes)
Pure Virtual Functions and Interfaces
Assignment on Polymorphism
Week 7: Midterm Exam
Review of Topics Covered
Midterm Examination
Week 8: Templates and Generic Programming
Introduction to Templates
Function Templates
Class Templates
Generic Programming and its Benefits
Lab on Template Functions and Classes
Week 9: Exception Handling in C++
Introduction to Exceptions
Try, Catch, and Throw Statements
Handling Multiple Exceptions
User-Defined Exceptions
Lab on Exception Handling
Week 10: File Handling in C++
Introduction to File I/O
Reading and Writing Files
File Streams (ifstream, ofstream)
Binary and Text Files
Practical Implementation of File Handling
Week 11: Standard Template Library (STL)
Introduction to STL: Containers, Iterators, Algorithms
Sequence Containers (Vector, List)
Associative Containers (Map, Set)
Algorithms (Sort, Find, etc.)
Lab on STL Implementation
Week 12: Object-Oriented Design and UML
Introduction to Object-Oriented Design
Basic UML Diagrams (Class, Sequence, Use-Case Diagrams)
Designing Classes Based on Real-World Problems
Assignment on OOP Design Using UML
Week 13: Design Patterns in OOP
Introduction to Design Patterns
Creational, Structural, and Behavioral Patterns
Practical Examples of Design Patterns in C++
Week 14: Introduction to Dynamic Memory and Pointers
Pointers and Memory Management in C++
Dynamic Memory Allocation and Deallocation (new, delete)
Shallow vs. Deep Copy
Lab on Dynamic Memory and Pointers
Week 15: Final Project Presentation
Project Presentation by Student Groups
Evaluation of OOP Principles and C++ Concepts Applied
Final Review and Feedback
Week 16: Final Exam
Comprehensive Review of the Course
Final Examination
Laboratory Work (Hands-On)
Weekly lab sessions complementing the theoretical lectures.
Hands-on practice with real-life coding problems using C++.
Assignments focused on:
o Implementation of classes, inheritance, and polymorphism.
o Operator overloading and template-based programming.
o File handling and use of STL containers.
Assessment and Evaluation
Assignments (10%): Regular assignments focusing on programming tasks.
Quizzes (10%): Short quizzes after every 2-3 weeks to assess conceptual clarity.
Midterm Exam (30%): Evaluating understanding of basic OOP concepts and their
implementation in C++.
Lab Work + Projects (50 Marks): Grading based on the practical implementation of
concepts in lab sessions.
Practical Exam (50 marks): Group project involving the design and development of a
C++ application using OOP principles.
(NOTE: Practical Exam carries 100 marks however 50 marks for written and 50
marks for sessional exams of practical)
Final Exam Theory(20%): Comprehensive exam covering all topics from the course.
Recommended Textbooks and Resources
Primary Textbook:
o C++ Programming:An Object-Oriented Approach by Behrouz A. Forouzan and
Richard F. Gilberg
o "Object-Oriented Programming in C++" by Robert Lafore.
Supplementary Resources:
o C How to Program 8th Edition by Paul Deitel and Harvey Deitel
o Online Resources:
GeeksforGeeks: C++ Tutorials
cppreference.com
Course Policies
Attendance: Minimum 75% attendance required to be eligible for the final exam.
Assignment Submission: Assignments must be submitted before the deadline; late
submissions will incur penalties.
Plagiarism: Zero tolerance for plagiarism; any instance will result in disciplinary action.
Conclusion
This course is designed to provide a strong foundation in OOP using C++, enabling students to
design and develop efficient and scalable software applications. It emphasizes both theoretical
understanding and practical implementation, aligning with the HEC and NCEAC guidelines.