This course is designed to teach Object-Oriented programming concepts, techniques, and applications using the Python programming language. Introduces the fundamental concept of programming from an object oriented perspective. Topics are drawn from classes and objects, abstraction, encapsulation, data types, calling methods and passing parameters, decisions, loops, arrays and collections, documentation, testing and debugging, exceptions, design issues, inheritance and polymorphic variables and methods. The course emphasize modern software engineering and design principles.