An introductory level Java course which aims to ensure that students have a thorough grasp of the basics of object-oriented programming in Java 1.5. The emphasis is on fundamental principles and their application in practice. Language constructs and library classes are introduced as embodiments or examples of the principles and best practice is emphasised throughout.