Getting the Most from Your Technical Reading Experience

This is an update of a post that originally appeared on July 20, 2011.

There are many ways to work with books. However, in all cases, there is some work involved. No book, no matter how well researched and written, will simply spit out answers without any effort on the reader’s part. It’s true that the author can employ techniques to make the reading experience more pleasurable, productive, or efficient, but in the end, it’s the reader who decides just how much information a book conveys with regard to a specific need.

Of course, the first step is to ensure you get the right book. I’ve already discussed this issue in the Techniques for Choosing a Technical Book post. So, let’s assume that you have possession of a book that’s the best possible match to your needs. It may not be a perfect match, but it offers more than any other book you’ve checked.

Now you have to decide on how to interact with the book. That may seem simple, but many readers fail to discover what they need from a book, even when the book contains the required information in several places. Let’s face it, books are relatively large and it’s easy to lose track of a required bit of information. Without some guideline, the mind wanders and tends not to work very hard.

To obtain the most from a book you need a goal. The goal determines how you approach the book. Someone who is trying to learn a new skill will probably begin at the front of the book and work toward the end. Skipping chapters is akin to skipping classes in college—you can’t expect good results if you don’t obtain all of the information. As a contrast, someone who is trying to fix a specific problem under the watchful eye of a boss, probably doesn’t want to waste any more time than necessary finding the required information. This sort of reader will want to locate the section of the book containing the answer quickly. There are some readers though, who really don’t know what they want to do—they lack a goal and are thwarted when the author can’t guess what the reader wants. So, ask yourself why you’re reading the book and create a goal for that particular session. In some cases, you may very well want to wander through the book randomly looking for something interesting, but few people have the time or need to perform this sort of reading with a technical book.

Depending on your goal, you’ll want to determine where to start. Someone who is learning a skill will start in the Introduction—not in Chapter 1. If you don’t read the Introduction, you’ll discover that your educational experience is going to be less helpful. The Introduction is where the author conveys book goals, knowledge requirements, and required training aids. For example, you might not be able to use the educational version of the product you have to learn a new skill with this particular book—it may be necessary to get the released version of the product instead. Researchers and those who simply need the book for reference would do well to check both the Table of Contents and the Index. A book intended solely for reference may include tables in an appendix that provide additional ways to locate information, so you’ll want to find these tables as well.

You’ve likely heard all of the advice for creating a good study environment before, such as turning off the radio. A good study environment also requires focus on your part and the availability of the required equipment. Simply reading about how to perform a task isn’t nearly as good as actually performing the task. Reinforcing the information by putting it into your own words is helpful as well. Everyone learns differently, so it’s important that you take time to discover how you learn. Whatever it takes for you to create a good study environment, you won’t get much out of a book until you create it.

Everyone seems to be in a hurry today, but being in a hurry won’t help with technical information. Hurrying only creates errors. Take time to actually read and understand the material—read it several times if necessary. Work through the material before you act. Yes, I realize that the boss is ready to pound little knots all over your head, but he’s simply going to have to wait. A good solid answer that produces results often requires a little more time up front to create. The book probably has the information you need, but you have to take time to find it.

One of the most important things to remember is that the author isn’t clairvoyant. You won’t find a precise answer to any given question in any book. It’s possible to find an answer that’s close, but in most cases you’ll have to create a solution based on the information the book provides—quick answers are rare.

I wish it were possible to create some form of instant mental transfer of precise data. Perhaps someday it will become the norm to do so, but I hope I’m not around. Part of the joy of technical reading is obtaining the author’s point of view and then creating your own permutations of that information. Working through problems creatively is a challenge—one that I hope people working in technical areas continue to enjoy. If you have any pointers to getting more from a technical reading experience, let me know at [email protected].

Ongoing Education

This is an update of a post that originally appeared on April 7, 2011.

In looking at a lot of my previous posts, I try to see the truth value in them. Did they hold up to the test of time? When it comes to ongoing education, it doesn’t matter how old you get, you still need to learn new things. I encountered a friend at the library the other day, long retired, he’s still feeding his brain with new things and doing so makes him a very interesting person to talk to.

There are only 24 hours in each day, making it impossible for any one human to know the sum of human knowledge or even a small portion of it. The 24 hour limit means we must actually choose carefully and depend on others to have knowledge we don’t possess. Anything that isn’t growing is dead and a form of growth is the increase of both knowledge and wisdom.

Of course, I do obtain daily increases in knowledge. The art of writing technical books is embracing a strategy of learning all the time. I read voraciously, subscribe to word builders, and conduct experiments to see just how things really work (as contrasted to the theoretical discussions in the books and magazines I read). The very act of writing involves learning something new as I discover new ways to express myself in writing and convey information to readers. I’ve picked up books I wrote early in my career and am often appalled at what I considered good writing at the time, but it was good writing given my experience, even though it would be unacceptable today.

Learning is part of every activity in my life and I relish every learning event. So it was on this particular weekend twelve years ago that my wife and I packed our lunch and sent to Get Ready…Get Set…Garden! We looked forward to it every year. This year we took classes on hostas (for fun) and horseradish (as part of our self-sufficiency).

Before we went to class though, we just had to spend a little time looking at some of the displays. A personal favorite of mine was the gourds:

A display of interesting things made with gourds.
A display of interesting things made with gourds.

I’ve always wanted to make some bird houses, but never quite have the time. They actually had a class on the topic this year and I was tempted to take it, but that would have meant missing out on the horseradish class, which I considered more important. Here’s Rebecca and me standing in front of one of the displays:

John and Rebecca standing in front of one of the displays.
John and Rebecca standing in front of one of the displays.

Well, onto the classes. I found out that there are over 2,000 varieties of hostas, which I found amazing. They originated in Japan, Korea, and China.  It takes five years on average to grow a hosta to full size, but it can take anywhere from three years to ten years depending on the variety. I found out our place for growing them is perfect, but our watering technique probably isn’t, so we’ll spend a little more time watering them this summer. Our presenter went on to discuss techniques for dealing with slugs and quite a few other pests. Most important for me is that I saw some detailed pictures of 50 of the more popular varieties that are easy to get in this area. I’ll be digging out some of the old hostas in my garden and planting new as time allows.

The horseradish session was extremely helpful. I learned an entirely new way to grow horseradish that involves laying the plant on its side for the first six weeks, digging it up partially, removing the suckers, and then reburying it. The result is to get a far bigger root that’s a lot easier to grind into food. I can’t wait to try it out. Of course, our instructor had us sample a number of horseradish dishes while we talked. I’m not sure my breath was all that pleasant when we were finished, but I enjoyed the tasty treats immensely.

So, what are your educational experiences like? Do you grow every day? Let me know at [email protected].

Techniques for Choosing a Technical Book

This is an update of a post that originally appeared on April 13, 2011.

I often get e-mails from potential readers asking whether a book I’ve written is the right choice for them. I try my best to ask about their needs and provide an unbiased answer. It’s in my best interest to provide the best answer I can, rather than make a quick sale and have to deal with a discontented reader later. However, in all honesty, it’s hard for me to be completely unbiased because I know my books better than any other book out there. I’ve spent many hours carefully crafting my books and know them quite well. Even when I read a work written by someone else, which I do regularly, I’m less familiar with it. Still, I do try my best to provide a good answer.

Getting a potential reader to make a good selection is still the best scenario in my mind. A number of readers have asked that I provide them with some specific technique for doing this, but all I can offer is a partial solution. The technical content of a book is only part of the solution for any reader. A reader must also consider the author’s method of presenting material and writing style. The use of teaching aids is also important. You must ask whether you want a book that contains questions or activities at the end of each chapter—many readers learn more by doing, than by reading. Communication, even in books, is a two-way process. The author often communicates ideas in subtle ways that help some readers and offend others. When a reader writes to an author, the author picks up subtle hints on how to improve the next book. It’s an ongoing process.

Everyone begins looking for a book by viewing the cover. Something about the title tells you that this could be a helpful book. The cover design and text tell you something about the book’s content from a marketer’s perspective. If you stop here, however, be prepared for disappointment. I’ve had more than a few covers that just didn’t do justice to the content of my book and a few that ended up misleading some part of the reader population. Believe me when I say that it’s never my goal to mislead anyone—I want my readers fully informed before making the purchase and happy with the book they receive. Covers are incredibly hard to get right because there is so little space on them to convey information that’s truly useful to everyone.

When I select a book, I normally begin by reading the Introduction. This important bit of reading is only seven or eight pages long in most cases, but usually characterizes the author’s attempt to convey everything the book contains as an overview. Reading the Introduction tells you about the author’s writing style and informs you about skills required to use the book successfully. You also discover special equipment and software that you need to use the book. If you find yourself disagreeing with the Introduction, you can be certain that you won’t like the rest of the book either.

Most people purchase their books online today. Gone are the days of browsing for books in bookstores, which is a shame because I found many unexpected treasures that way. I still go to a bookstore when I can, but most of the time I have to make do with a site like Amazon.com. With this in mind, make sure you avail yourself of the Look Inside feature and take the time to read things like the table of contents, introduction, and a writing sample. Some publishers hide the content of their books and don’t provide a Look Inside feature. I generally don’t buy these books because it’s not possible to know what I’ll get.

Next, I look at the Table of Contents to determine whether the topic I need is covered in sufficient detail to warrant a purchase. A book’s title and cover material is often deceiving. The Table of Contents tells me more about the book content from the author’s perspective. I go through the entire Table of Contents just to see what sorts of interesting information the author has decided to include. I may also thumb through the index to determine more about topics covered in the book. It’s important to note that the index is normally created by a professional indexer and not the author, so the index may not tell you everything you need to know, but it’s a great place to see the sorts of topics the author has chosen to discuss.

Finally, I go to the specific chapters that I feel provide the information that I want from the book. (When I can’t see the specific chapter I want online, then I at least try to read through the sample chapters that the publisher does provide.) I’ll eventually read most of the book, but these chapters are my main reason for buying the book today, so that’s where I look. I probably won’t read the entire chapter in the store (or online using Amazon’s Look Inside feature), but I’ll scan it and pay attention to particulars such as the code provided in examples or figures used for explanation. I’ll read segments of the discussion to see how much information the author provides and how the information is conveyed.

I know that many people consider my approach too time consuming. It is a time consuming approach, but I find that I make fewer bad purchases using this technique. I’ve had more than a few people write to me to ask why I didn’t cover a particular topic in my book and I have to wonder why they didn’t realize that the material was missing when they made the purchase. A few readers have literally written that they ran into the store during lunchtime (or checked it out on Amazon), looked at the cover and decided the book must include what they need, put down their hard earned money to buy the book, ran back to work, and only then bothered to look inside. If you truly are pressed for time, please do write before buying one of my books. I’ll provide you with the least biased answer I can. However, the best way to buy a book is to make your own decision using the techniques found in this post. Let me know your ideas about buying books at [email protected].

Choosing a First Language to Learn

My first programming experience (during the time of the dinosaurs) involved using a light panel to enter machine code into a rudimentary computer with 3 KB (yes, that’s KB) of RAM. The output was also in light form and I needed to decode the lights to determine if my code worked right. I worked with various systems in various ways over the next several years. By the time I got to college, the first language I learned there was BASIC (Beginner’s All-purpose Symbolic Instruction Code), then PC assembler, followed by Pascal. In fact, I’ve just stopped counting the number of languages I’ve learned over the years because each language has a place in my programmer’s toolbox. Of course, the question is what language you should learn first. I get asked that question quite often because there are a huge number of languages available today and no one wants to invest time in a language that’s going nowhere.

Part of the answer to the question of what to learn first is what you intend to do with the language. Each language has features that make it better at performing specific tasks. Programming languages can be split into those that are designed for a special purpose and those that are designed for a general purpose. A special purpose language, such as Structured Query Language (SQL), could be a good choice if you intend to move into database work immediately. However, for most people, a general purpose language works better because you can use it for a wider variety of tasks without bending yourself into a pretzel shape to do it.

A good place to start if you want to choose a language that’s popular enough to help you get a job afterward is the TIOBE index. It shows a listing of which languages are most popular today. As I’m writing this, Python is the most popular language on the list, but that could change tomorrow. Generally, any of the top ten languages on the list are good choices.

Of course, you want a programming language that is easy to learn. C/C++, C#, and Java are all complex languages with great flexibility. Furthermore, C/C++ and C# can help you work at a low level with the computer hardware. These languages have a steep learning curve and may not provide the best choices for a starting point. That said, if you have a line on a job that uses any of these languages, you could do worse than start here, just be prepared to burn the midnight oil learning.

The language I suggest people learn as a starting point is Python. In fact, Beginning Programming with Python For Dummies, 3rd Edition makes a point of showing you just how easy things can be. You don’t even need to invest in any special software, the book shows you how to use Google Colab so that you could conceivably learn how to program on your smartphone or TV. Others must agree with me because Python has turned into the language that the education industry turns to most often for budding programmers.

There are a lot of programming languages available today. You need to research the choice by taking into account what your personal needs are and what sort of job you want to get afterwards. You might find that something like JavaScript or Ruby will provide benefits that you can’t get with Python. Which language do you think will work best for you? Let me know your reasons at [email protected].

Python Community Support

This is an update of a post that originally appeared on October 13, 2014.

There are many issues to consider when choosing a programming language. Python is no exception. Just because I feel it’s the right tool to meet some of my needs doesn’t mean it will work well for you. That’s why the Understanding Why Python is So Cool section of Chapter 1 in Beginning Programming with Python For Dummies, 3rd Edition is so important. This section tells you why I see Python as an important programming language and why you might want to use it too. I break the problem into three parts: what Python can do for your application needs, how Python can benefit you personally, and which organizations are using Python for specific tasks. Between the three sections, you can make an intelligent decision as to whether Python will actually serve your particular needs. I really don’t want you to take my word for it—I would rather know that you selected Python based on your own research.

No matter how interesting a language is, no matter how many features it provides, and no matter how much you personally like it—you can’t typically learn a language that lacks broad community support with any ease. If no one else is using the language and contributing to it in some major way, the language will eventually die. Fortunately, Python doesn’t have this problem. Chapter 21 of my book discusses ten essential libraries for Python, none of which come with the language when you download it. In fact, the introduction to this chapter lists a number of places where you can find even more libraries to use.

The thing is that Python keeps attracting ever more attention. A recent Dev article, 10 Best Tools Python Programmers Can Learn in 2023, provides you with access to tools you really need to know about. The point about tools is that they represent an essential form of community support. As people use a language, they start to build places where others can discuss it with them. However, that’s only one form of community support. Tools represent a significant increase in support because creating, debugging, and supporting a tool requires time and effort that most developers don’t have in abundance. Someone really has to believe in a language to provide this sort of language support.

The fact is that Python has become a “must learn” language. It has great community support, provides a broad range of functionality through libraries and tools, and is fully supported by the academic community. Even though other languages have had these advantages and eventually failed, the chances are far less likely that Python will experience problems. In fact, many rankings sites show Python as being the most popular language out there right now.

Community support is an essential determinant of programming language popularity. How do you rank Python in your toolbox and why? Let me know at [email protected]. Tell me about your favorite Python library or tool and how you use it as well. (No vendor emails please, I want to hear from developers who are actually using products.) I’m interested in discovering just what makes some languages so incredibly popular (Python being one of the most popular).

Facing the Blank Page

Most writers face writer’s block at some point. You have a blank page that’s waiting for you to fill it and you have a vague notion of what you want to say, but the text simply doesn’t come out right. So, you write, and write some more, and write still more, and hours later you still have a blank page. Yes, you’ve written many words during that time—all of them good words—just not the right words.

Every piece of writing I do starts with an outline. Even my articles start with an outline. Creating outlines help you focus your thoughts. More importantly, they help you to see how your thoughts will flow from one idea to the next. Sometimes, if you’re honest with yourself, you’ll discover that you really don’t have anything more than a vague idea that will never become an article, white paper, book, or some other piece of writing. Of course, that’s really the reason for this exercise—to see if you have enough information to even begin writing. If you don’t have enough information, then you need to research your topic more. Research can take all sorts of forms that include everyone from reading other texts on the topic, to doing interviews, to playing. That’s right, even playing is an essential part of the writer’s toolbox, but this is a kind of practical play that has specific goals.

Once you do have an outline and you’re certain that the outline will work, you need to mark it up. My outlines often contain links to resources that I want to emphasize while I write (or at least use as sources of inspiration). A lot of writers take this approach because again, it helps focus your thoughts. However, an outline should also contain other kinds of information. For example, if a particular section is supposed to elicit a particular emotion, then make sure you document it. You should also include information from your proposal (book goals) and your reader profile (who will read a particular section) in the outline. Your marked up outline will help you understand just what it is that you really want to write. In reading your outline, you can start to see holes in the coverage, logic errors, and ideas that simply don’t fit.

Moving your outline entries to the blank page will help you start the writing process. Convert the entries to headings and subheadings. Ensure that the presentation of the headings and subheadings is consistent with the piece as a whole. Unfortunately, you can still end up with writer’s block. Yes, now you have some good words on the page, but no real content. An outline is simply a synopsis of your ideas in a formalized presentation after all.

Write the introduction and the summary to the piece next. The introduction is an advertisement designed to entice the reader into moving forward. However, it also acts as a starting point. The summary doesn’t just summarize the material in the piece—it provides the reader with direction on what to do next. People should view a good summary as a call to action. By creating the introduction and the summary, you create the starting and ending points for your piece—the content starts to become a matter of drawing a line between the two from a writing perspective.

At this point, you have enough material that you could possibly ask for help. Try reading your piece to someone else. Reading material aloud uses a different part of the brain than reading the same material silently. Discussing the material with someone else places a different emphasis on the material. The other party can sometimes provide good suggestions. You may not use the suggestions directly, but listening carefully can often present you with creative ideas that you wouldn’t have considered otherwise.

It’s important not to overwork the piece. Sometimes you need to do something else for a while. Yes, you always want to spend time in research and thinking your piece through, some writing is often done in the subconscious. Fill your head up with as many creative ideas, fascinating thoughts, and facts that you can, and then do something that actually will take your conscious mind off the topic. You might watch a television show or movie, go for a while. have coffee with a friend, take a nap, or do any of a number of other things. The important thing is to forget about the book for a while. Often, you’ll find that the now semi-blank page doesn’t present a problem when you return. Let me hear about your ideas for dealing with the blank page at [email protected].

 

Selecting a Computer Book

Readers contact me on a regular basis about selecting a computer book. I often think they want a precise recommendation from me (and some do ask me to provide a specific recommendation). However, I can’t choose a book for you or any other reader for a number of reasons. Most important of all, I don’t know how you learn. There are other issues too. For example, I can’t always guess from the e-mail precisely how you intend to use the book or what sort of information you need from it. In short, my best guess probably won’t be good enough.

Originally, I tried to handle the situation by providing a blog post entitled, “Techniques for Choosing a Technical Book.” The blog post worked well for a while, but it still doesn’t really answer reader needs. For example, readers would often act oddly if I didn’t recommend one of my own books, even though I knew from the reader query that my book would only solve part of their need and there was a better option out there. (Part of creating a book proposal is to look at the competition in depth and determine how your book will fill a niche that the competition doesn’t. I try to be honest with readers in this regard so that when they do buy a book, they’re happy with the purchase.) With this in mind, I wrote a series of three articles that examines the whole question of selecting a computer book in significantly more detail:

The goal of these three articles is to provide you with the best possible information about selecting and using a computer book. The thing I’ve noticed most often when I receive complaint e-mails is that even when a reader does select a truly usable computer book, sometimes they don’t get the most out of it. A purchase is only as good as the value you receive from it. These articles are designed to increase your satisfaction by helping you use the books more effectively.

Choosing and then using a computer book effectively will help you gain new marketable skills and insights into the computer industry. Overall, it’s my goal to help you earn more money or live a better life when I write a computer book. In other words, my goal is to help you gain something of value—something that you can later say improved your life in some way. Of course, I’m always refining my skills and choosing new techniques based on reader needs at any given time. That’s why I always want to hear from you at [email protected].

 

Review of Mastering VBA

A lot of people have asked about the next book to read after reading VBA for Dummies. Yes, the current 5th edition of VBA for Dummies still works fine as a starting point, even with issues such as dealing with the Ribbon to consider. In fact, you can find some great updates to VBA for Dummies on my blog. However, the fact of the matter is that readers have been asking for more, which is where Mastering VBA by Richard Mansfield comes into play. This is the next book you should get if you want to move on from what VBA for Dummies shows you to writing applications with greater functionality. For example, a lot of you have requested more information about creating forms and Chapters 13 through 15 will help you in this regard. Richard has done an outstanding job of moving you to the next step of creating the complex forms required for robust applications.

Another common request that Mastering VBA addresses is the need for security. While VBA for Dummies helps you understand the need for basic security, Mastering VBA takes the process several steps further and could help prevent breaches given the modern computing environment (one that didn’t exist when I wrote VBA for Dummies). Chapter 18 begins the process by emphasizing the need to build well-behaved code. After all, if your code doesn’t behave, there isn’t any set of security measures that will protect it from harm. Chapter 19 goes on to help you understand the essentials of good security, especially with all the modern threats that cause problems for developers today.

At 924 pages (versus 412 for VBA for Dummies), Richard is also able cover some topics in detail that would have been nice to have in my own book. Readers have complained about having to go online to view object model details for the various Office applications in my book. Mastering VBA provides coverage of the object model as part of the book so you can work through it without having to go anywhere else. It’s a convenience issue—readers really shouldn’t have to look for essentials like the object model online, but every author has to face space limitations when putting a book together. The object model material is spread out across the book, but there really isn’t any way to organize it so that it all appears together. This is one time when you’ll need to actually use the table of contents and index to find the material you need.

As with all the books in the Mastering series, this one has questions at the end of each chapter. These questions are designed to help you master the skills learned in the chapter. You find the answers for each of the questions in the back of the book. This makes Mastering VBA an excellent option for the classroom. More importantly, it gives you another way to learn the material in the book. The longer I write books, the more I come to realize that one or two methods of learning simply won’t do the job. This book usually provides three or four ways to learn each task, which means that you have a higher probability of actually mastering the material (as defined by the title).

For all of you who have been asking for the next book after VBA for Dummies, Mastering VBA is the one that gets my recommendation. Until I actually have time to write a book that specifically addresses the concerns in the reader e-mails I’ve received, this book is your best option. No, it doesn’t address every e-mail request that I’ve received, especially with regard to form creation, but it does answer a considerable number of them. Of course, I’ll look forward to your continued interest in my book and I hope you keep those e-mails coming my way!

 

Review of Essential Algorithms

Working in computer science means knowing how to work with computer languages, but it also means knowing how to use math to obtain the results you want. Some math is relatively straightforward, but some becomes so complicated that you really do need some type of process or procedure for working with it. Essential Algorithms by Rod Stephens, “defines steps for performing a task in a certain way.” The first chapter begins by defining what an algorithm is and moves on from there to show you how they can help improve your ability to write complex applications.

The examples are written in a pseudocode that the author explains in Chapter 1. In fact, the explanation is accompanied by some examples of how to turn the pseudocode into an actual programming language. I’m almost positive some readers will take exception to the use of pseudocode because it doesn’t relate the example in their specific programming language, which would make implementation of the code as easy as possible for the reader. In this case, the use of pseudocode is impossible to avoid because the book would be far less useful without it.

This text could easily be used in a college. Each chapter ends with exercises that help the reader understand the concepts better (or at least determine whether any of the material actually sunk in). The answers to the examples appear in an appendix at the end of the book. However, in a college setting it might be possible to create a student version of the book without the appendix and a teacher version that includes the answers. The author also uses many of the same examples that I used when I was a student in college, but with an emphasis on diagrams to pictorially show how the examples work. The addition of graphics makes the examples considerably easier to understand.

The early chapters discuss specific kinds of algorithms that are used in every programming language that exists. For example, the author tackles the topic of randomizing data and ensuring that the randomizing process is fair. Of course, getting truly random data on a computer is impossible, but it’s possible to create random sequences of such complexity that the average human would never notice they aren’t random. This book discusses the topic at a length that I wish the text I had used in college would have provided.

Don’t get the idea that Essential Algorithms is light on the computer science aspects of using algorithms. For example, you’ll find coverage of all the basic structures used by most languages: linked lists, arrays, stacks, and queues. I could have wished for coverage of dequeues because many languages modify dequeues to create stacks and queues. Understanding how this essential structure works would have been great.

There are separate chapters for sorting and searching. These two tasks are performed so often by applications that an in depth knowledge really is a necessity for any computer scientist. All the common sorts are covered in sufficient detail that the reader should understand them with relative ease: insertion, selection, bubble, heap, quick, and merge. In addition, you find the counting and bucket sorts (two types of sorts that are completely missing my my college text—I took the time to check). The list of searches are likewise complete: linear, binary, and interpolation.

The opening chapters are finished with chapters on hash tables and recursion. I thought the chapter on hash tables was a bit light and their use as dictionaries in languages such as Python is only mentioned in passing. The chapter on recursion was far better done. I found the material on the various kinds of curves: Koch, Hilbert, and Sierpinski, exceptional.

The middle of the book (starting with Chapter 10) is taken up with trees, networks, and strings. There should be enough material here for anyone who really wants to learn the information. The author seems to hit his stride in these chapters—they’re both interesting and well written.

The end of the book starts with cryptography in Chapter 16. It’s the part of the book that just about anyone will find helpful and it’s also the part that separates this book from being a mere college text and more of a reference book. The chapter on complexity theory is exceptionally nice. Even if you’re already an expert in other areas of this book, it’s likely that you’ll find some new ideas in this part of the book—enough ideas to make it well worth the purchase price.

Overall, Essential Algorithms is the text I wish I had when studying the topic in college and it’ll make a fine addition to my bookshelf. I’ll likely use it as a reference book when trying to understand how various programming languages are implementing a practical need, such as determining how to work with structures such as stacks. I don’t delve deeply into security issues very often, but I’m sure that material will see use as well. There are some holes in the book, but I wouldn’t consider them deal killers and could provide great fodder for the author in the form of articles and blog posts. This is a great book and one that you need on your shelf.

 

Review of Math for the Zombie Apocalypse

Making learning fun is something every author struggles with and few authors achieve. Math for the Zombie Apocalypse is one of the few books out there that actually make a mundane topic like mathematics fun. The essential content of this book is the same as the content for any beginning math book you have ever read. There is no way to get around the requirement of having to learn addition, subtraction, multiplication, and division. However, this book accomplishes its task with panache.

The reader is instantly engaged in a favorite topic of children today, avoiding zombies. Of course, it’s one thing to say that you want to avoid zombies, but it’s quite another to actually accomplish the task. Throughout the book, the reader is asked how he or she would prove their mettle against hoards of zombies roaming the land. The answer is to use math to figure out how to stay alive while less skilled acquaintances become zombies themselves.

Of course, the book is meant entirely in fun. The humor is grand and of the sort that children will enjoy immensely. However, the result of reading the book is that a child sees a useful purpose in learning math—even though this purpose is quite fictional in nature. Most math books out there are dry, humorless tomes filled with mind numbing repetition that will lull the most stalwart child to sleep. There is no reason that a child can’t learn new skills in a fun-filled environment. Before the reader realizes it, he or she has learned new and useful skills.

Fortunately, this isn’t the only book the author intends to write. You’ll want to wait to see the new additions to the for the Apocalypse series, but for now, make sure you check out Math for the Zombie Apocalypse, especially if you have a child that is having a hard time learning the basics. This is the sort of book that I wish had been available when I was growing up and one that I hope others see as being a valuable way to get kids interested in an essential topic. The press, teachers, parents, and even a few students complain about the low scores children achieve in basic math today, but this book does something about the problem.