This course explores advanced object-oriented programming concepts, including object-oriented design, integrating software components, recursion and abstract data types (ADT). Introduction to data structures and algorithms for sorting and searching towards the creation of complex programs as a complete client-focused.