You are purchasing a standalone product; MyProgrammingLab does not come packaged with this content. If you would like to purchase both the physical text and MyProgrammingLab search for 0133050556/ 9780133050554. That package includes 0132747189/ 9780132747189 and 0133019861/ 9780133019865 .
MyProgrammingLab should only be purchased when required by an instructor.
Introduction to Programming Using Python is intended for use in the introduction to programming course.
Daniel Liang is known for his “fundamentals-first” approach to teaching programming concepts and techniques. “Fundamentals-first” means that students learn fundamental programming concepts like selection statements, loops, and functions, before moving into defining classes. Students learn basic logic and programming concepts before moving into object-oriented programming, and GUI programming. Another aspect of Introduction to Programming Using Python is that in addition to the typical programming examples that feature games and some math, Liang gives an example or two early in the chapter that uses a simple graphic to engage the students. Rather than asking them to average 10 numbers together, they learn the concepts in the context of a fun example that generates something visually interesting. Using the graphics examples is optional in this textbook. Turtle graphics can be used in Chapters 1-5 to introduce the fundamentals of programming and Tkinter can be used for developing comprehensive graphical user interfaces and for learning object-oriented programming.
This is a college-level textbook, suitable for beginners to programming. As such it does a reasonably good job, in clear language. There are many examples and exercises. This is the second edition, and deals entirely with Python 3. The usual resources for instructors are available from the publisher's website.
Contents
01) Introduction to Computers, Programs and Python 02) Elementary Programming 03) Mathematical Functions, Strings, and Objects 04) Selections 05) Loops 06) Functions 07) Objects and Classes 08) More on Strings and Special Methods 09) GUI Programming Using Tkinter 10) Lists 11) Multidimensional Lists 12) Inheritance and Polymorphism 13) Files and Exception Handling 14) Tuples, Sets and Dictionaries 15) Recursion
16) Developing Efficient Algorithms 17) Sorting 18) Linked Lists, Stacks, Queues, and Priority Queues 19) Binary Search Trees 20) AVL Trees 21) Hashing: Implementing Dictionaries and Sets 22) Graphs and Applications 23) Weighted Graphs and Applications
A) Python Keywords B) The ASCII Character Set C) Number Systems
Chapters 16 through 23 are not contained in the book, but are online.
Additional supplements
The following supplements are (it says here) available from the Companion Website:
General Supplements A. Glossary B. Installing and Using Python C. Python IDLE D. Python on Eclipse E. Python on Eclipse Debugging F. Python Coding Style Guidelines
Advanced Python Topics A. Regular expressions B. Obtaining Date and time C. The str Class's format method D. Pass Arguments from the Command Line E. Database Programming.
The publisher's site also contains a substantial list of errata.
Omissions
Comparison with a comparable textbook, Murach's Python Programming, reveals not a few lacunæ in the present opus, some fairly startling; for example (the page-numbers refer to Murach):
010 Bytecode 028 Shebang line 050 Sep 078 Pseudocode 085 How to escape from an infinite loop 106 Calling main() 116 Docstrings 118 Namespaces 155 The IDLE debugger 180 Deepcopy 183 Key parameter for sort 195 With 210 CSV files 211 newline parameter 234 sys.exit 256 Locale 270 Multiline strings 276 Replace 282 Join
At minimum, these are not in the index of Liang.
SUMMARY
So, a fairly well done introduction to Python; but I have seen several reviews (e.g. by David Muller on Amazon US) to the effect to the effect that this book has been written by a Java programmer, and frequently contains bad Python code and incorrect terminology. Having worked through both, and taking into account the pricing at the time of writing: if I had a choice, I'd take Murach.