Prerequisite: CS610 and CS631, or equivalent. Surveys major concepts in object-oriented analysis, design, and programming such as encapsulation, information hiding, inheritance, and polymorphism. Covers how these ideas are implemented in modern programming languages such as Java, C#, Python, Smalltalk, or C++. Students are assigned programming projects using an object-oriented language to enhance their understanding of the concepts of object-oriented programming.