This module is concerned with Object-Oriented Programming using the Ruby language. It reviews object-oriented concepts such as classes, objects, message passing, inheritance, polymorphism and genericity. We will look at how these constructs are implemented in current programming languages such as Java, C++ and Ruby, and see how they are used to construct high-quality programs.There is a strong emphasis on practical program development, for which Ruby will be the language used.