Advanced treatment of the main constituents of the object-oriented methodology introduced in the prerequisite course: data abstraction, inheritance, and polymorphism. Comparison of several object-oriented languages, such as C++, Java and Smalltalk. Paradigms and implementation techniques associated with object-oriented languages. Advanced topics, such as prototyping, delegation, and concurrent object-oriented programming. The course includes substantial programming projects involving object-oriented programming.