This course aims to educate students to understand the Object-Oriented approach to programming and help them develop some practical skills along the way. The concepts that will be explained and skills developed are in common use among programmers using many modern Object-Oriented languages and are thus transferable from one language to another. However, for practical purposes these concepts are explored and demonstrate using the C# (pronounced C sharp) programming language. Topics include GUI objects and controls, methods, classes, objects, inheritance, polymorphism, the SOLID design principles, exception handling, handling events, and files and streams. Students would have to develop a structured Windows application programs and implement the Object-Oriented principles, then present/defend it to the class by the end of this course.