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. |