This course is an advanced object-oriented programming course and covers advanced program development techniques and concepts in the context of an object-oriented language. Subject matter includes object-oriented analysis and design, encapsulation, inheritance, polymorphism (operator and function overloading), information hiding, abstract data types, reuse, dynamic memory allocation, and file manipulation. Upon completion, students should be able to develop a hierarchical class structure necessary to the implementation of an object-oriented software system.