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