Course Objectives: |
The course aims to teach students object-oriented programming concepts, to enable them to make the software development process more efficient and regular, and to design software systems by applying OOP principles |
Course Content: |
Classes and objects, class member variables and functions, access specifiers and the concept of scope, overloading of functions, classes and operators, data abstraction, inheritance and polymorphism, creation of abstracted class definitions, class and function templates, introduction to design patterns. |
Week |
Subject |
Related Preparation |
1) |
Object Oriented Programming: Introduction to Classes and Objects and Strings, Class definitions, objects, data members, member functions, constructors, separation of interface. |
CH3 |
2) |
Classes: Review of functions (scope concept, pointers, pointers vs. references, storage, and duration of variables). Review of pointers, unary scope resolution operator. |
CH6,CH8 |
3) |
Classes: Class scope, usage of constructors and destructors. friend functions and friend classes, this pointer, class variables vs. object (instance) variables, Case Study problems. |
CH9 |
4) |
Operator Overloading; Class string: Using overloaded operators, overloading of binary and unary operators, dynamic memory management. |
CH10 |
5) |
Operator Overloading; Using standard class templates array and vector, catching exceptions, examples for the class implementations of overloading by vectors and arrays. |
CH7, CH10 |
6) |
Object-Oriented Programming: Inheritance concept, derived classes, inheritance hierarchy, constructors’ destructors in derived classes. |
CH11 |
7) |
Object-Oriented Programming: Software Engineering with Inheritance, examples. |
CH11 |
8) |
Midterm Exam Week |
- |
9) |
Object-Oriented Programming: Polymorphism, abstract classes and virtual functions, virtual destructors, |
CH12 |
10) |
Object-Oriented Programming: Polymorphism Applications |
Ch12 |
11) |
Standard Library Containers and Iterators: containers, iterators, standard library algorithms |
CH15 |
12) |
Introduction to Custom Templates: class templates, overloading function templates |
CH18-CH19 |
13) |
Custom Templatized Data Structures: self-referential structures. |
CH19 |
14) |
*Other Topics in OOP: mutable class members, multiple inheritance, multiple inheritance, and virtual base classes. Structural Design Patterns in C++. Example: the “decorator” pattern. |
CH23 and Slides |
|
Program Outcomes |
Level of Contribution |
1) |
Adequate knowledge in mathematics, science, and computer engineering principles, both theoretical and practical, and the ability to apply this knowledge to complex engineering problems. |
|
2) |
Ability to identify, formulate, and solve complex computer engineering problems using appropriate analysis and modeling techniques. |
3 |
3) |
Ability to design and develop complex computer systems, devices, or products that meet specific requirements and operate under realistic constraints and conditions, using modern design methods. |
2 |
4) |
Ability to develop, select and use modern techniques and tools used for the analysis and solution of complex computer engineering problems, and the ability to use information technologies effectively. |
3 |
5) |
Ability to plan and conduct experiments, collect and analyze data, and interpret results in the study of complex computer engineering problems or research topics. |
|
6) |
Ability to work effectively within and multidisciplinary teams; individual study skills. |
|
7) |
Ability to communicate effectively orally and in writing; knowledge of at least one foreign language; ability to write effective reports and understand written reports, to prepare design and production reports, to make effective presentations, to give and receive clear and understandable instructions. |
|
8) |
Awareness of the necessity of lifelong learning; ability to access information, to follow developments in science and technology and to renew continuously. |
|
9) |
To act in accordance with ethical principles, professional and ethical responsibility; information on the standards used in engineering applications. |
|
10) |
Information on business practices such as project management, risk management and change management; awareness of entrepreneurship and innovation; information about sustainable development. |
|
11) |
Knowledge of the effects of computer engineering practices on health, environment and safety in the universal and social scale and the problems of the era reflected in computer engineering; awareness of the legal consequences of computer engineering solutions. |
|