This course begins with a brief review of data types, control structures and loop topics. Then course focus on object-oriented programming paradigm and design, encapsulation and information hiding, classes, subclasses, inheritance, polymorphism, class hierarchies, abstract class and interface concepts are introduced in this concept. Finally course explains collections, streams and I/O, generic class concepts. The course uses the Java programming language and features to explain these concepts.