This course is designed to cover the methodology of programming from an object-oriented perspective, and introduce object-oriented design principles in the context of a language that supports the object-oriented paradigm. It also aims to introduce object-oriented testing and debugging techniques, as well as the basics of graphical user interface programming and event-driven programming