Students are introduced to the Java programming language and to conceptual principles of the object-oriented approach, including data-oriented decomposition, abstraction, hierarchy and encapsulation. The course discusses the basic building blocks of classes and objects and their realisation in analysis and design methods. Also advanced Java programming concepts are introduced including graphics programming and multi-threading. Students are introduced to an object-oriented design method based on UML. Requirements analysis and Use analysis are discussed together with the analysis , design , implementation and deployment stages of the design process. The design process will be illustrated with large scale and embedded system applications. There will be an opportunity to develop key design skills in a series of design exercises.