Synopses & Reviews
This book is for anyone who wants to understand computer programming. You'll learn to program in a language that' s used in millions of smartphones, tablets, and PCs. You'll code along with the book, writing programs to solve real-world problems as you learn the fundamentals of programming using Python 3. You'll learn about design, algorithms, testing, and debugging, and come away with all the tools you need to produce quality code. In this second edition, we've updated almost all the material, incorporating the lessons we've learned over the past five years of teaching Python to people new to programming.
You don't need any programming experience to get started. First, you'll get a detailed introduction to Python and to programming. You'll find out exactly what happens when your programs are executed. Through real-world examples, you'll learn how to work with numbers, text, big data sets, and files. Then you'll see how to create and use your own data types.
The incremental examples show you the steps and missteps that happen while developing programs, so you know what to expect when you tackle a problem on your own. Inspired by "How to Design Programs" (HtDP), you'll learn a six-step recipe for designing functions, which helps you as you start to learn the concepts--and becomes an integral part of writing programs by the end.
As you learn to use the fundamental programming tools in the first half of the book, you'll see how to document and organize your code so that you and other programmers can more easily read and understand it. Beyond the basics, you'll learn how to ensure that your programs are reliable, and how to work with databases, download data from the web automatically, and build user interfaces. Most importantly, you'll learn how to think like a professional programmer.
You'll need to download Python 3, available from "python.org". With that download comes IDLE, the editor we use for writing and running Python programs. (If you use Linux, you may need to installPython 3 and IDLE separately.)
"I wish I could go back in time and give this book to my 10-year-old self when I first learned programming! Its so much more engaging, practical, and accessible than the dry introductory programming books that I tried (and often failed) to comprehend as a kid. I love the authors hands-on approach of mixing explanations with code snippets that students can type into the Python prompt."- Philip Guo, Creator of Online Python Tutor and Assistant Professor, Department of Computer Science, University of Rochester
"Practical Programming delivers just what it promises: a clear, readable, usable introduction to programming for beginners. This isnt just a guide to hacking together programs. The book provides foundations to lifelong programming skills: a crisp, consistent, and visual model of memory and execution and a design recipe that will help readers produce quality software."- Steven Wolfman Senior Instructor, Department of Computer Science, University of British Columbia
"The second edition of this excellent text reflects the authors many years of experience teaching Python to beginning students. Topics are presented so that each leads naturally to the next, and common novice errors and misconceptions are explicitly addressed. The exercises at the end of each chapter invite interested students to explore computer science and programming language topics."- Kathleen Freeman, Director of Undergraduate Studies, Department of Computer and Information Science, University of Oregon
About the Author
Paul Gries has been teaching in the Department of Computer Science at the University of Toronto for more than 15 years. During his time at UofT, Paul has won numerous teaching awards, including UofT's most prestigious teaching award and an Ontario-wide teaching award. Paul has also co-authored two textbooks, has been a leader in departmental curriculum design and renewal, and, with Jen, got to teach Python to tens of thousands of students in a MOOC.
Jennifer Campbell is a senior lecturer in the Department of Computer Science at the University of Toronto. Over the past 10 years, Jen's primary focus has been on teaching and curriculum design of introductory courses. Jen is involved in several projects exploring student experiences in introductory computer science courses and the factors that contribute to success, including the effectiveness of the inverted classroom.
Jason Montojo is a research officer at the Donnelly Centre for Cellular and Biomolecular Research at the University of Toronto, where he develops scientific software for the Cytoscape and GeneMANIA projects. He has a strong interest in teaching computer science and frequently mentors students for Google's Summer of Code program.