This week's book giveaway is in the OCP forum. We're giving away four copies of OCP Oracle Certified Professional Java SE 11 Developer Practice Tests and have Scott Selikoff and Jeanne Boyarsky on-line! See this thread for details.
I am curious about whether the motivation behind the deep dive was your day-to-day work. Most algorithm books are written by computer scientists, devoid of attempts to solve practical problems, and they are a little boring to read :-)
Thanks for your question. There are definitely some examples in the book that relate to my day-to-day work (I'm a data scientist). Chapter 9, for example, is about machine learning which I use every day. Chapter 6 is about simulated annealing which I've used for route optimization problems. Some other topics make appearances which I've used for practical day-to-day work, like statistical tests (discussed briefly in Chapter 5) and natural language processing (Chapter 8). However, I drew inspiration more from day-to-day life than day-to-day work. I have examples about how to decide how much to eat at a buffet, how to decide how much education to get, and how to win at board games. I also included things that are neither part of day-to-day life nor day-to-day work, like how to draw a magic square, how to assign young people to lifeboats on the Titanic, how to set tax rates, and how to calculate continued fractions. I wanted to include algorithms that are important, useful, but above all interesting, regardless of their origin or use. I want the book to be readable and enjoyable for an interested amateur even if they have no need to work with algorithms - I want people to be able to read it and enjoy it as much as they would a novel or history book. You can judge for yourself whether I succeeded! Best regards,
Thank you for doing the giveaway and being here on the forum. Looking at the books description on Amazon I'm unable to determine if your book is appropriate for a person like me. Please let me know your thoughts. I've wanted to learn to be a programmer since I was a kid in the 1970s. I've tried many times and have realized I may simply lack the cognitive ability and/or intelligence to do this kind of work. My wife of 15 years has observed as we interact with people such as repair people in our home or out in retail sales/service personnel encounters it appears to take me an inordinate amount of time to process what someone says in order to respond. Every attempt I've made at learning to code has ended with me getting to the point of making the transition to object oriented programming. It seems once I try to deal with polymorphism and inheritance I start to have real difficulty in understanding what I'm doing. What stops me cold is problem solving. It seems I have an insurmountable obstacle with this task. Often I know I lack domain knowledge. Of course I can't write code to solve a problem, if I don't understand the problem. For example, a recent attempt was to create a knowledge base web application. Of course I can Google this and likely find an example, but at that point, I'm nearly taking someone elses existing application and tweaking it to be my own. Honestly at the moment, I've let go of the goal to change careers to be a programmer. (I'm 52 and "legally blind". Very hard to find am employer when you have two strikes against you from the word go.) My goal now is simply to do it for my own benefit. So, having said all of this, might your book help me learn how to write code such that I could actually write a complete application of my original work?
Forgive my long-windedness and thank you for your time.
Thanks for your post. I have a lot of thoughts about what you wrote. Here goes:
First of all, I think anyone can learn to code, so I don't think you should believe that you lack the needed cognitive ability or intelligence. In Chapter 1 of my book, I write about how if you can catch a ball, you've already mastered an algorithm, and it only takes a few lines of code to capture the movement of the ball through the air. Algorithms and coding don't need to be difficult, and it's always possible to start with some simple ones that anyone can master before moving on to the harder ones. I think quite often, when people struggle with math or coding or anything else, it can be because they feel intimidated or they tell themselves they're not good enough, not because they actually lack the abilities. If you can get past the mental blocks, believe in yourself, and just as important, put in the hours consistently, you can definitely learn to code.
Next, some more good news: my book doesn't use any of the common features of object-oriented programming, and none of its examples rely on polymorphism or inheritance that you say you've struggled with. Many of the scripts in the book are quite short, around a dozen lines, and are meant only to do some very simple problem-solving tasks. So, there's no need to worry about the transition to OOP in my book.
You mentioned creating a knowledge base web application. That sounds like a really serious undertaking! Web applications, especially ones with serious databases, often have many moving parts, and rely on many tools in many languages to work properly. I would think that if you feel like you're at a beginner level, you should take on projects that are simpler and can be contained in a simple script using only 1 language. The examples in my book would all be simpler than a full knowledge base web application. On the other hand, the examples in my book are meant to illustrate algorithms, not necessarily to build large-scale projects like you might as a professional developer. So whether you'll like working through the examples in my book will depend on whether you're interested in learning the ideas of some common/interesting algorithms, or whether you would prefer to work more with practical, deployable projects.
You mentioned google-ing things and taking someone else's existing work and tweaking it to be your own. I wouldn't worry about that - it's a common coding practice! Of course you don't want to steal intellectual property or do anything illegal or immoral, but there are many freely available code examples online and even the best coders will simply copy and paste them when it's appropriate. That's why we write books about coding, after all, so that we can provide more examples that people can use, copy, and tweak to be their own.
You mentioned being legally blind. Actually Daniel Zingaro was here doing a book promo just last week, and he is a computer science professor who is also legally blind. I also knew a fully blind man who worked writing code for the government, and he seemed to have lots of success at his job. I don't know much about vision impairment but I know that doesn't need to stop you either.
To sum up, I think you can learn to code and I think the examples in my book could help you. Keep in mind that my book doesn't include full-scale applications, but rather shorter scripts meant to accomplish littler tasks. I hope that's helpful. Good luck! and best regards,
I'd like to get to full production applications. However, baby steps. Your book does sound like it's a good fit for me! Thank you for mentioning Daniel Zingaro. You've given me lots to think about and yes, my low vision is not my biggest issue. Easily my biggest issue is my crushing lack of self confidence as a result of my disability. I can't hide it. I can't fix it and in the 1970s, 80s, and even into the 90s the world was not kind to those with impairments. At least not in small town Midwest USA. I'm older now and try to not let the past interfere with the future. As is easy to tell, I've not fully defeated my demons.
Again thank you and I hope I win! Should I win, may I have a PDF instead of a physical book?
Regarding the pdf - the giveaway rules are set by Code Ranch, not by me. I'm very willing to work with Code Ranch to give the book in a different format, but I think they'll have the final say about the rules so we'll have to wait to hear from them. There is a pdf available so it seems like it should be possible.
I think you've got the right idea - we can't control the past, all we can do is do our best to make the future good. We're all on our own paths and we all have our own battles to fight. I wish you all the best with everything you're trying to do! Best regards,
No problem! I can easily buy your book from the fine folks at No Starch Press. Multiple ebook formats all DRM free! Need that to work with my app that reads to me called "Voice Dream". Thank you so much Dr. You've really made my day!
Congratulations on getting the book out Bradford.
As many have already expressed, writing a book on algorithms that is interesting to read is a Herculean task. I've been trying to pen a course for a friend and I spend weeks on just one topic and I am still not done. I loved the outfielder analogy and I am sold on your writing style. 👏🏻
Also, I went through the book description but could not make if your book does cover graph algorithms or max flow problems?
Thanks for your post. Unfortunately there's no section on graph algorithms or max flow in this book. The closest it gets is Chapter 7, about geometry and an algorithm for drawing Voronoi diagrams, but that's not the same. I'm considering putting a graph-based recommender system in my next book, but I haven't finalized that yet either. Out of curiosity, what's your interest in graph algorithms and max flow problems? Best regards,
Well.. my interest for graph algorithms stems from my work. (I work with algorithms dealing with genomics a lot.) As for the Max flow problems, that was for the course I was putting together and wanted to see different teaching perspectives of the same.