Skip to main content

YAM 110 - Object Oriented Programming

Faculty of Engineering and Natural Sciences · Electrical & Electronics Engineering (English 30%) · Undergraduate

ECTS: 4 T+P+L: 1+0+2 Compulsory
Coordinator:

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

  1. Implement C++ programs using classes, objects, and appropriate access control.
  2. Apply constructors, destructors, pointers, and dynamic memory management effectively in C++.
  3. Use inheritance and polymorphism to create extensible and reusable software components.
  4. Implement operator overloading, templates, and exception handling to enhance program flexibility and robustness.
  5. Utilize the C++ Standard Template Library (STL) for common data structures and algorithms.
  6. Analyze and debug C++ programs using appropriate tools and techniques.
  7. Apply object-oriented design principles to solve real-world problems and develop maintainable software solutions.

Core Area Distribution

(48) Computing%50 (52) Engineering and Engineering Trades%50