This course presents the fundamental principles of object oriented programming particularly in Java through using the open source interactive development environments (IDEs): Eclipse and NetBeans. The course introduces basic data types, operators and expressions, compiling and running programs, methods and parameter passing, GUI programming, selection and iteration, classes and objects, inheritance and abstraction, interfaces and polymorphism. A design approach appropriate for the programming languages, i.e. UML, will also be used. The issues of code re-use and software alongside with building up a class hierarchy from ground-up will be discussed throughout the course.