The objective of this course is to teach the student the concepts and practices of advanced object-oriented software design and development. The student's programming foundation will be enhanced by studying advanced concepts behind object orientation, including role-based programming, advanced concepts of inheritance, interface development, design patterns, and test-driven development. Using this foundation, students will learn the real-world aspects of object orientation by putting the concepts into practice. Students will use a contemporary object-oriented programming language and a database management system to develop a client-server application. Core course. Prerequisite: CIS 314.