This course is an introductory course on programming logic design and problem solving. Appropriate syntax and library are introduced to enable learners to write programs for solving the problems. To support the teaching of programming in a problem driven way, the learners will be trained with a wide variety of problems at various levels of difficulty to motivate them. The problems cover many application areas, including math, science, business, financial, and gaming. The course is fundamentals first by introducing basic programming concepts and techniques before designing custom classes. The fundamental concepts and techniques of selection statements, loops, methods, and arrays are the foundation for programming. This course is designed for the beginners not only to understand deeply the conceptual programming but also about the object oriented programming concepts.