Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Explorations in computing : an introduction to computer science and Python programming
Conery J., Chapman & Hall/CRC, Boca Raton, FL, 2015. 439 pp. Type: Book (978-1-466572-44-7)
Date Reviewed: Jul 9 2015

Despite its subtitle, it would be wrong to consider Explorations in computing a textbook on Python. Instead, this extraordinary textbook on computer science (CS) provides an excellent introduction to a wide range of topics, such as data structures, data representations, programming techniques, computer architecture, simulation, learning, natural language processing (NLP), optimization, and so on. The author even includes throughout the book various discussions regarding computational complexity in very understandable terms. This is all covered within a gentle introduction to the Python programming language, which is often adorned with historical references.

As a result, Conery does not introduce Python, discussing its main constructs and how they can be used in increasing order of difficulty (as is often the case in most textbooks). Instead, a specific project is proposed in every chapter--from the simple matter of computing prime numbers, to the complex case of computing optimal solutions, to the traveling salesman problem--whose computation requires specific constructs. First, the reader has good motivation to learn how to do something (because there is a specific problem at stake, that is, a goal of larger importance); second, the reader is presented with a perfect opportunity to learn beyond the capabilities of a specific programming language, that is, data structures, programming techniques, and so on. Most algorithms are explained in easy-to-understand terms, usually making comparisons with processes in real life. For instance, quicksort is exemplified with the task of sorting a number of recipes that fell on the floor and have to be sorted again. There are even problems specifically devoted to analyzing the relationship between problems as they are solved with a computer and how they are solved in real-life situations. Additionally, all algorithms are illustrated with several figures that clarify the concepts and conclude with a presentation of Python code that carries out the same computations described before.

Throughout the book, specific sections introduce advanced topics. In particular, those titled “The Art of Programming” are a joy to read. Here, the author takes a stand, discussing Bayesian inference and other topics of importance in CS.

Likewise, it would be equally wrong to consider this book an introduction to CS. The projects are selected in increasing order of difficulty and each one fully justifies the selection of the Python structures exemplified in every chapter. For example, the sieve of Eratosthenes serves as a perfect excuse to introduce lists and loops; various algorithms for sorting and searching are used to explain while statements in full detail and recursive functions, with a wonderful introduction to divide and conquer. When discussing merge sort, generators and lazy evaluation are introduced and a good example of slices is shown. An implementation of a spam processor is done using dictionaries, and classes appear when they are really needed for implementing a poker game. The discussion of object-oriented programming is particularly good. For example, the author easily introduces the need to overload operators as a need that arises naturally.

Indeed, the author emphasizes the different abilities of Python: each chapter includes snippets and examples of usage, which always follow the typical simplicity of Python. Moreover, the book comes with a library that implements many of the inner details of the functions discussed. Additionally, the author often presents different alternatives for achieving a specific goal, but then chooses the one that favors good design.

Of course, a programming language (and the underlying concepts implemented in any programming language) is acquired with practice. There is no doubt this is a hands-on textbook: in addition to the library, every chapter provides an impressive number of exercises of varying difficulty.

When taken together, it becomes apparent that this is not just a book about a specific programming language, though a good understanding of the contents of this book would unavoidably lead the reader to be a good programmer in Python. It is also a CS textbook that does an excellent job of motivating the reader to want to learn more. Thus, it perfectly serves its purpose since it was written as part of a CS1 course.

All in all, this book is a perfect match for those who want to learn a programming language (and Python in particular). Because the book does an excellent job of introducing many relevant concepts in CS, senior programmers will most likely not find any new material here (though reading this book will refresh previously learned concepts). In summary, this excellent book is well written and full of useful examples that show good programming habits.

Reviewer:  Carlos Linares Lopez Review #: CR143596 (1509-0745)
Bookmark and Share
  Reviewer Selected
 
 
General (D.1.0 )
 
 
Python (D.3.2 ... )
 
Would you recommend this review?
yes
no
Other reviews under "General": Date
Problems in programming
Vitek A., Tvrdy I., Reinhardt R., Mohar B. (ed), Martinec M., Dolenc T., Batagelj V. (ed), John Wiley & Sons, Inc., New York, NY, 1991. Type: Book (9780471930174)
Aug 1 1992
KNOs: KNowledge acquisition, dissemination, and manipulation Objects
Tsichritzis D., Fiume E., Gibbs S., Nierstrasz O. ACM Transactions on Information Systems 5(1): 96-112, 1987. Type: Article
Nov 1 1987
Programmer perceptions of productivity and programming tools
Hanson S. (ed), Rosinski R. Communications of the ACM 28(2): 180-189, 1985. Type: Article
Jul 1 1985
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy