Faculty of Engineering and Natural Sciences · Software Engineering (English) · Undergraduate
Course Objective
The objective of this course is to provide students with a solid foundation in object-oriented programming (OOP) concepts using the C++ programming language. Students will learn to design, develop, test, and maintain software using principles such as encapsulation, inheritance, polymorphism, and abstraction. The course emphasizes problem-solving, algorithmic thinking, and the application of object-oriented design techniques to create efficient, reusable, and maintainable software solutions. By the end of the course, students will be able to develop medium-scale C++ applications and apply OOP principles to real-world programming challenges.
Course Content
Introduction to object-oriented programming and the C++ programming language; classes and objects; data encapsulation and abstraction; constructors and destructors; inheritance and polymorphism; function and operator overloading; virtual functions and abstract classes; templates; exception handling; file input/output operations; Standard Template Library (STL); dynamic memory management; pointers and references; object-oriented analysis and design; development of practical C++ applications through laboratory exercises and programming projects.
Course Learning Outcomes
- Implement C++ programs using classes, objects, and appropriate access control.
- Apply constructors, destructors, pointers, and dynamic memory management effectively in C++.
- Use inheritance and polymorphism to create extensible and reusable software components.
- Implement operator overloading, templates, and exception handling to enhance program flexibility and robustness.
- Utilize the C++ Standard Template Library (STL) for common data structures and algorithms.
- Analyze and debug C++ programs using appropriate tools and techniques.
- Apply object-oriented design principles to solve real-world problems and develop maintainable software solutions.


