Thanks to Liang's revolutionary fundamentals-first approach, which enables students to comprehend problem solving and core constructs before object-oriented programming, students will be able to understand notions of problem-solving and programming regardless of their major. Liang's methodology has been expanded to include programming examples that are rich in applications, beyond the typical math-based challenges present in most textbooks. Even though they use objects from an early age, students first learn about control statements, methods, and arrays before learning how to create classes. Advanced subjects like graphical user interface, exception handling, input/output, and data structures are covered in later chapters. While longer examples are offered in case studies with comprehensive line-by-line explanations and comprehensive discussions, smaller, simpler examples serve to illustrate ideas and strategies.