Fundamentals First

The book is fundamentals-first, which introduces basic programming concepts and techniques before objects and classes. The fundamental concepts and techniques of loops, methods, and arrays are the foundation for programming. Building the foundation prepares students to learn object-oriented programming and advanced Java programming.

Why Fundamentals First?

Learning basic logic and fundamental programming techniques like loops and step-wise refinement is essential for new programmers to succeed. Students who cannot write code in procedural programming are not able to learn object-oriented programming. A good introduction on primitive data types, control statements, methods, and arrays prepares students to learn object-oriented programming.

From Fundamentals to Object-Oriented

The book is fundamentals-first. Often students have difficulty to adapt to object-oriented paradigm. The book addresses this issue in chapter 10 on transition from procedural programming to object-oriented programming. The chapter focuses on class design. Several examples are used to demonstrate the advantages of object-oriented programming. Students learn how and when to apply OOP effectively.

Problem Driven

This book teaches problem solving in a problem-driven way that focuses on problem solving rather than syntax. We make introductory programming interesting by using interesting problems in a broad context. The central thread of early chapters is on problem solving. Appropriate syntax and library are introduced to support the writing of a program for solving the problems. To support the teaching of programming in a problem-driven way, the book provides a wide variety of problems at various levels of difficulty to motivate students. In order to appeal to students in all majors, the problems cover many application areas in math, science, business, financials, gaming, animation, and multimedia.

Why Problem-Driven?

Programming isn't just syntax, classes, or objects. It is really problem solving. Loops, methods, and arrays are fundamental techniques for problem solving. From fundamental programming techniques to object-oriented programming, there are many layers of abstraction. Classes are simply a layer of abstraction. Applying the concept of abstraction in the design and implementation of software projects is the key to developing software. The overriding objective of the book, therefore, is to teach students to use many layers of abstraction in solving problems and to see problems in small and in large. The examples and exercises throughout the book emphasize problem solving and foster the concept of developing reusable components and using them to create practical projects..