This book is designed to be easy to read and understand although the topic itself is complicated. Algorithms are the procedures that software programs use to manipulate data structures. Designed to support an introductory programming course, this book teaches you concepts of problem-solving and object-orientated programming using a fundamentals-first approach. Beginner programmers learn critical problem-solving techniques then move on to grasp the key concepts of object-oriented, GUI programming, data structures, and Web programming. The 2019 edition has been completely revised to enhance clarity and presentation, and includes new and expanded content, examples, and exercises.