Introduction to algorithm design using the object oriented paradigm. Object orientation in theory coupled with the implementation of an object-oriented design in the Java language. Program documentation. Programming style and structured programming guidelines.