This course helps to equip students with essential skills needed for structured and object-oriented programming. At the completion of the course, students should understand fundamental programming concepts such as memory management, flow control, methods, procedural decomposition, objects, classes, inheritance, and polymorphism; be able to write simple applications using the capabilities of the C++ programming language and apply principles of good programming practices throughout the process. At the end of the course, the student should be able to research, analyze, design, develop, and maintain functioning software systems according to the goals of the AUCA Software Engineering Department and the 510300 IT competency standard.