Object - Oriented Programming - Lab

Practical implementation of the object-oriented paradigm. Covers IDE setup, data abstraction, encapsulation, constructors, destructors, inheritance architectures, polymorphism, operator overloading, file handling, templates, and graphical user interfaces using C++ and C#.

Instructor: Mr. Musawar Ali

Term: Fall

Location: CS Department, National University of Computer & Emerging Sciences, Karachi

Course Learning Outcomes (CLOs)

At the end of this lab course, students will be able to:

  • CLO 1: Acquire knowledge of underlying concepts of object oriented paradigm like abstraction, encapsulation, polymorphism, inheritance etc.
  • CLO 2: Interpret real world problems in terms of objects rather than procedure.
  • CLO 3: Develop an understanding of Object-Oriented design artifacts and their mapping to Object-Oriented Programming using C++.
  • CLO 4: Apply object-oriented programming principles to implement small and medium scale C++ / C# programs.
  • CLO 5: Implement Generic Programming Concepts and exception handling.

Prerequisites

  • Simultaneous enrollment or completion of CS 217 Theory.

Textbooks

  • Problem Solving with C++, 9e Global Edition, Walter Savitch, ISBN-13:9781292018249, Addison-Wesley, 2015.
  • C++ How to program, By Deitel & Deitel.

Reference Material

  • The C++ Programming Language, by Bjarne Stroustrup.
  • Object Oriented Software Engineering, by Jacobson.
  • C# 4.0: The Complete Reference, by Herbert Schildt.

Grading Policy

  • Lab Activities: 20%
  • Lab Mid Exam: 20%
  • Course Project (including viva exam & report): 10%
  • Lab Final Exam: 50%

Project Timeline

  • Week 2: Project proposal options announced.
  • Week 3: Final proposal submission deadline.
  • Week 12: Final code delivery, project demo, and viva defense.

Schedule

Week Date Topic Materials
1 Introduction to IDE & Core Concepts

Introduction to IDE, skeleton of a C++ program, pointers, arrays, and basic I/O operations in C++.

2 Data Structures & Functions

C++ data types, functions, and a structured review of structs.

3 Classes & Objects

Hands-on implementation of classes, objects, and initial access control.

4 Object Lifecycle Management

Working with classes, standard constructors, parameterization, and destructors.

5 Access Modifiers & Shared States

Working with access modifiers, static keywords, and constant attributes. Core concepts review before Lab Mid 1.

6 Advanced Modifiers & Initialization

Working with static functions, constants, constant functions, and member initialization lists.

7 Class Hierarchies

Implementing single and multiple derivation types of inheritance.

8 Static Polymorphism

Code implementation of polymorphism, function overloading, and function overriding.

9 Extensibility & Operator Overloading

Developing friend classes, friend functions, and standard unary/binary operator overloading.

10 Dynamic Polymorphism

Coding abstract classes, interfaces, and virtual functions.

11 Resolving Structural Ambiguities

Managing multiple inheritance, resolving the diamond problem via the virtual keyword, and abstract class applications.

12 Project Evaluation Milestone

Comprehensive project evaluations, execution demos, and viva defense.

13 Stream I/O & Generic Programming

Persistent file handling and I/O streams. Building generic template functions and template classes.

14 Final Lab Examination

Comprehensive final lab examination evaluating practical coding proficiency.

15 Grading Finalization

Tabulation and finalize sessional marks for lab performance tracking.