Software engineering principles of object-oriented design: basic data structures, classes and objects, creation tactics, inheritance, composition, polymorphism, interfaces, compilation and execution. Programming Objectives: introduction to advanced data structures, inner classes, and reflection. Exception handling and unit testing. Prerequisite: CMPUT 275.