This course provides a comprehensive introduction to the object-oriented programming paradigm. The course uses the Java programming language, which is totally object-oriented language, and the Java development environment to demonstrate the principles of object-oriented programming. Other languages, including Smalltalk, may be used for comparison. The course covers the Java language and the Java development environment, including the Java Software Development Kit (SDK) and Integrated Development Environment (IDE) tools. The course also covers the key concepts of object orientation, including inheritance, encapsulation, polymorphism and communication with messages. Other topics include classes and objects, base classes and class hierarchies, abstract and concrete classes. Offered every year. This is a programming course.