The Third edition ofData Abstraction and Problem Solving with Java: Walls and Mirrorsemploys the analogies of Walls (data abstraction) and Mirrors (recursion) to teach Java programming design solutions, in a way that beginners find accessible. Readers will gain a solid foundation in data abstraction, object-oriented programming, and other problem-solving techniques. The first part of the book covers problem-solving techniques including a review of Java fundamentals, principles of programming and software engineering, recursion and data abstraction, and linked lists. Later chapters focus on problem solving with abstract data types including stacks, queues, algorithm efficiency and sorting, trees, and graphs. Readers searching for problem solving solutions through abstraction, algorithmic refinement, data structures and recursion.