This easy-to-follow and classroom-tested textbook guides the reader through the fundamentals of programming with Python, an accessible language which can be learned incrementally. This revised and updated new edition will teach students how to recognize and apply abstract patterns in programming through the extensive use of illustrative examples and practical exercises. The book also demonstrates the benefit of using a debugger to inspect the state of a program while it is executing. Topics and features: incudes numerous examples and practice exercises throughout the text, with additional exercises, solutions and review questions at the end of each chapter; highlights the patterns which frequently appear when writing programs, reinforcing the application of these patterns for problem-solving through practice exercises; introduces the use of a debugger tool to inspect a program, enabling students to discover for themselves how programs work and enhance their understanding; presents the Tkinter framework for building graphical user interface applications and event-driven programs; provides instructional videos and additional information for students, as well as support materials for instructors, at an associated website. Ideal for introductory programming courses for undergraduates in computer science, this hands-on textbook for interactive classroom learning will help students to develop the necessary skills to begin writing their own programs. Due to the wealth of support material available, Python is selected as a good first language with little "overhead" in learning to write simple programs.