Author: Y. Daniel Liang
Publisher: Prentice Hall
Audience: Students starting to learn Python 3
Reviewer: Mike Driscoll
A "fundamentals-first" approach to teaching programming. Does it succeed?
This book is written for someone who is beginning to learn Python. The target audience is probably college or high school students. The author teaches using Python 3. I think this is a good book for someone interested in learning Python 3.
Each chapter ends with a “Key Terms” section, a Chapter Summary, a link to some test questions and some programming exercises. There is an accompanying website that includes answers to the review questions and the even-numbered programming exercises as well as source code examples from the book. It also includes some interactive self-test questions and supplements to the text.
The first chapter is more of an introduction to computing in general then to Python. Oddly enough, when the author does get to Python, he ends up covering almost nothing and then jumps into using the turtle module, which is used for teaching children programming. There’s nothing wrong with learning turtle, but it seems a little incongruous at this point. I think I would have held off on that until Chapter 2.
Chapter 2 is basic stuff like variables, constants, operators, etc. Chapter 3 goes into math functions, strings and drawing shapes with turtle. Chapter 4 is titled “Selections”, but focuses on Boolean expressions and conditionals (i.e. if statements). Chapter 5 is on loops, which in Python means “while” and “for” loops. Chapter 6 dives into functions. It has an odd section that states that you can create a function that doesn’t return anything. In reality, if you don’t code in an return statement, the function will automatically return None, which is a special type of value in Python. I found this section of the book a little misleading.
Chapter 7 jumps into the subject of objects and classes. In Chapter 8, we dig into the many string methods that Python provides. We get into an advanced topic with Chapter 9 where we begin some GUI programming using Tkinter, a toolkit built into the standard distribution of Python. Then we jump back to basics with a chapter on lists in Chapter 10. There’s also a little more GUI programming with an interesting looking little card shuffling script. Chapter 11 goes over multidimensional lists and includes a way to check a Sudoku solution using them.
Chapter 12 ramps up the difficulty level by going into inheritance and polymorphism in Python. In Chapter 13, we learn about file i/o and exception handling. Chapter 14 goes back to some basic building blocks with tuples, sets and dictionaries. I think this is an odd place to stick this chapter. I would have expected it in the first 3 or 4 chapters. Anyway, the final chapter is all about the topic of recursion.
This book has tons of examples, programming exercises and things to do. The exercises range from your typical simple stuff to some fairly challenging items. The case studies that are sprinkled throughout can be interesting too.
I found the writing to be clear and pretty concise without a lot of witty banter. Yes, it is a little dry, but most programming textbooks are. While the chapter order is a little screwy to my mind, it states in the Preface that you don’t have to read them in the order printed. If you’re new to programming or just new to Python, then this book should get you going pretty well.