[Tutor] Comprehensive textbook (not for beginners)
boB Stepp
robertvstepp at gmail.com
Sat Sep 5 13:46:44 EDT 2020
On Sat, Sep 05, 2020 at 09:37:52AM +0100, Lilia Georgieva wrote:
>I am looking for a good detailed textbook/book/course on Python3 which
>goes beyond the basics and covers object-oriented programming as well as
>data structures and algorithms.
I own a rather large selection of Python books myself. As far as I am
aware there is no single book that contains all that you desire. But some
books that might augment your library and satisfy some of your individual
needs:
1) "Learning Python, 5th ed." by Mark Lutz, c. 2013. While this book is
becoming a bit dated on Python 3 (It covers through Python 3.3 and also
covers the Python 2.7 differences.), it has the most *thorough* coverage of
Python 3 that I am aware of. It comes in at a massive 1540 pages. Of
course it won't contain any new features added since Python 3.3, but if you
want the most thorough understanding of the Python language itself, I don't
think it can be beat.
2) "Programming Python, 4th ed." by Mark Lutz, c. 2011. Another massive
text by Lutz at 1584 pages. It is meant to be a follow-up to (1), showing
the reader how to write *real* programs in Python 3. As it predates (1) by
two years it is based on Python 3.1. I especially like this book for its
coverage of tkinter which is unusually expansive. The author tries to hit
on all likely areas where one might try to use Python for substantial
applications.
3) "Python 3 Object-Oriented Programming, 3rd ed. -- Build robust and
maintainable software with object-oriented design patterns in Python 3.8" by Dusty
Phillips, c. 2018. This book focuses on how to apply OOP with Python,
including when *not* to use OOP. My main quibble with this book is that
its publisher (Packt>) seems to produce books that like to fall apart. But
I feel the author gives a really solid foundation in OOP using Python.
4) "Mastering Object-Oriented Python, 2nd ed. -- Build powerful
applications with reusable code using OOP design patterns and Python 3.7"
by Steven F. Lott, c. 2019. This is also published by Packt>. It is a
rather large text coming in at 731 pages. Whereas (3) focuses on the
fundamentals of OOP this book attempts to cover more advanced use cases for
OOP using the full suite of advanced tools that Python has. For a sampling
of contained topics the major sections (with multiple chapters per section)
are:
Section 1: Tighter Integration Via Special Methods
Section 2: Object Serialization and Persistence
Section 3: Object-Oriented Testing and Debugging
Each section covers a substantial number of topics. Some random samplings:
thorough coverage of all of the dunder methods; descriptors; abstract base
classes; functools and memoization; decorators and mixins; REST services;
design principles and patterns; module and package design; quality and
documentation.
5) "Introduction to Computation and Programming Using Python -- With
Application to Understanding Data, 2nd ed." by John V. Guttag, c. 2016.
Book examples tested on Python 3.5. This book is derived from the author's
experience teaching the MIT OpenCourseWare on introduction to computer
science (two semester's worth). It is very useful in conjunction of that
online offering. A reviewer's quote from the back cover sums up the book's
purpose quite nicely: "...This is not 'a Python book,' although you will
learn Python. Nor is it a 'programming book,' although you will learn to
program. It is a rigorous but eminently readable introduction to
computational problem solving, and now also to data science -- this second
edition has been expanded and reorganized to reflect Python's role as the
language of data science." -- Ed Lazowska.
Though it does not require calculus you will get to remember all your other
high school mathematics.
6) "Fundamentals of Python Data Structures" by Kenneth A. Lambert, c. 2014.
The book claims to be suitable for a second semester course in introduction
to computer science. It covers: overview of collections; searching,
sorting and complexity analysis; arrays and linked structures; interfaces,
implementations, and polymorphism; inheritance and abstract classes;
stacks; queues; lists; trees; sets and dictionaries and hashing; graphs.
7) "Data Structures and Algorithms in Python" by Michael T. Goodrich et al.,
c. 2013. Its topics: algorithm analysis; recursion; array-based
sequences; stacks, queues, and deques; linked lists; trees; priority
queues; maps, hash tables, and skip lists; search trees; sorting and
selection; text processing; graph algorithms; memory management and
B-trees.
That sums up what I have on my bookshelf touching on the topics you
mentioned. I have delved into books (1) to (5) to a greater or lesser
extent and like them. Books (6) and (7) I have not really examined much
yet and cannot give a solid opinion, but as they are both used as college
textbooks they probably solidly cover their topics.
Hope this helps!
--
Wishing you only the best,
boB Stepp
More information about the Tutor
mailing list