“One of the more clever ways of introducing computational thinking to the general public.” —Vint Cerf, Turing Award winner, Chief Internet Evangelist at Google, a 'Father of the Internet'
Bad Choices is a book all about faster and slower ways of tackling everyday problems that aims to show how thinking in such terms can serve as a compelling introduction to computer science. The book contains twelve vignettes and sixty-five illustrations.
The book is the culmination of an effort that began in January 2014 to answer the question, “How might we make an abstract field like computer science compelling to a broad audience?”
“Perfect for anyone wanting to understand the basics of Computer Science.” —Cesar Hidalgo, director of the Collective Learning group at the MIT Media Lab, author of Why Information Grows
“Read it with the kids and spent more than an hour arguing about different sock-sorting algorithms. Was great fun!” —Daniel Whiteson, particle physicist, researcher at CERN, co-author of We Have No Idea
“What I appreciated most was how the book became a survey of things I take for granted every day, shining a light on these algorithms and showing me different ways to think about and consider them.” —Jamis Buck, author of Mazes for Programmers
Ali Almossawi is the author of books on critical thinking. His books have reached 3.5 million readers, translated into 22 languages, and have sold over 370,000 copies in print. He lives in San Francisco with his wife and daughter.
At the heart of this little book is a really good concept trying to get out - for me it's what you might call a successful failure. What it's trying to do is great, and being creative about doing so is also great - but creativity goes hand in hand with frequent failure, and I'm afraid there are just too many problems here for me to love this book the way I should.
Let's get the negatives out of the way so we can focus on what's good. It's a very short but expensive book - the 144 small pages have a lot of illustration that conveys very little information. What's left is a text that I comfortably read on an hour-long train ride, yet it's being sold at near £15. The illustrations are genuinely almost all doing nothing at all except adding padding. And though Ali Almossawi's writing style is friendly and laid back, it tends to the condescending. Worst of all, the book doesn't do what it says on the tin.
The subtitle is 'how algorithms can help you think smarter and live happier', implying that this book is going to show you how to make use of algorithms to improve your life. It won't. Almost all the examples it uses (in the form of little stories that try far too hard to be quirky) are totally useless in reality. About the only practically useful one is about sorting books on a shelf (though there is better guidance on that elsewhere - see below). And yet. There is something in this book.
What it really does, if you allow it, is to open up the secrets of what's going on inside a computer - specifically in some of the algorithms used to sort and search, to do lookups with hash tables, to have linked lists that enable you to add items to the middle of an ordered set with a minimum of effort and more. There is definitely a beauty, almost a poetry to this stuff, and Almossawi is usually very good at describing it.
So, it's really not going to do what the cover claims. It won't help you with practical, every day choices and problem solving. If you want a book on practical uses of algorithms in real life, look instead at Algorithms to Live By. And those stories, I'm afraid, for me mostly got in the way rather than made the material more approachable. (Almossawi imagines the reader, when asked 'What's a binary search?' thinking 'Ah, freedom, William Wallace, Eppy Toam*, shirts on a rack.' No, we really won't do that.) But for all that there's a lovely little book on a key aspect of how computers do their jobs lurking in here. I just wish there was more content, and it wasn't so obscured by fluff.
* Yes he really does have character names like this
Bad Choices by Ali Almossawi is a very clever, educational book designed to help explain IT concepts to budding programmers. It is a conceptual book, explaining what can appear to be quite complex ideas, using everyday examples. Not only does this book explain ideas around algorithms, but when reading the book, it makes you realise how you already follow many of the examples in your everyday life.
Almossawi shows how mundane tasks such as sorting socks into pairs can be a descriptive way of looking at ‘arrays’ in computing. You learn how to escape a maze in the most efficient way and how to sort numbers in a ‘linearithmic’ way.
I had started a new programming project which required me to write complex XML graphs. I hadn’t even heard of XML graphs at this stage and found the concept quite challenging. It was only once I had learnt how to write graphs that I came across this book. XML graphs are described in a wonderfully simplistic way using the example of a beaded necklace with someone’s name on the beads. I wish I had read this book before starting the project as my life would have been made so much easier.
The book seems to be aimed at would-be programmers, students, and people who want a different logical way of looking at things. It is easy to read and most importantly, easy to understand. The concepts discussed are very relevant to computer programming and I would recommend this book to anyone looking to get started in this field.
I was going to make a joke about the bad choice being to finish the book, but I'm sure someone else did it. Pretty sure. Y'know what? Fine. I'll check. ... Yep, someone definitely did it.
I loved this dude's first book, An Illustrated Book of Bad Arguments. This one about algorithms is a little above my head, or maybe a little less useful to me personally. Probably both. I mean, I cleaned up some vomit at work the other day, and I've come to believe there are some situations in which you should work smarter, not harder, and some situations that just require you to roll up your sleeves and do a thing, and if anyone has anything to say about doing it smarter, hand them a pair of gloves and tell them to go nuts.
1. An online adaptation of the first seven chapters, including a reading of one of the vignettes by my daughter: https://bookofbadchoices.com
2. A recent podcast in which I talk about the project and the developments over the course of three years leading up to the book: http://www.metalearn.net/podcasts/ml9...
This book is about how to do everyday tasks in the most efficient ways. It is not really about how to do them, but rather, the goal of the author is to show the different ways of approaching a certain situation and how it can create a difference in terms of how much time it takes, how easy it can be done etc. For me, it was awesome to see those different perspectives, but I feel like the title is a bit misleading. The book doesn't really offer major algorithms that would make your life happier though you might gain some insights about how to minimize the effort you spend on certain tasks.
The Bad Choice that I made was buying this book. The title is the book equivalent of clickbait - stay away!
Each chapter starts with a nice example, accompanied by truly awful character names and situations. For example, the author believes that it is summer in Cape Town in July. Then it jumps into discussing random concepts from computer science that are badly explained. The chapters are short and do not go into enough detail for you to understand how things fit together. He also cannot help himself with endless footnotes in which he contradicts himself ("sometimes this is not true").
The book has one concept only: an algorithm that does not grow as quickly in processing time when the number of items that it needs to process goes up is better than one that grows faster. In the meantime, who knows or cares what big-theta is? I don't!
Reading tip: "The Art of Explanation" by Lee LeFever.
Este libro es bastante más técnico que el anterior de este autor, "El Libro Ilustrado de Malos Argumentos", en el sentido de que exige, para empezar, un cierto nivel matemático por parte del lector. Y esto puede ser un obstáculo para muchos.
El autor nos presenta el uso de algoritmos como una herramienta de toma de decisiones, que nos puede ayudar, sobre todo en situaciones de búsqueda u ordenación de datos. Presenta diferentes algoritmos, y la justificación matemática de por qué unos son más rápidos que otros, y aunque se defiende muy bien presentando las funciones de cada algoritmo de manera clara y amena, puede ser demasiado para algunos lectores.
El libro exige un pequeño esfuerzo, pero vale la pena. Las ilustraciones, deliciosas, contribuyen al disfrute de los ejemplos, que están bien elegidos. Aunque es menos claro y útil que su anterior libro, resultará útil para aquellos a los que nos interesa cómo pensar mejor.
Serves as perhaps a neat way to review concepts from an "intro to computer science" course, but doesn't really stay true to the subtitle ("How algorithms can make you think smarter and live happier").
While the examples are concrete and clearly demonstrate the principle at hand, the examples are generally also too contrived to be connected to everyday tasks.
The quirky names and characters can be fun, but at times the tone towards the same characters can be unnecessarily condescending.
Was an interesting read, but I had hoped for more.
I'm a connoisseur of introductory algorithms books and this one is, well, not the best. The analogies are often awkward and their presentation glib so neither programmers looking for new ways to explain themselves nor non-programmers looking for insight are going to be helped much by this book. There's also not much that you could apply to your daily life (outside of what you already naturally do) so even the book's subtitle is a misnomer.
the concepts presented here are literally basic first-semester first-year computer science concepts, however the author is able to cleverly extend their applicability into wider life scenarios.
I read this a little at a time over a long period of time. I enjoyed it in theory more than in actuality, but it's not a bad book.
Almossawi sometimes explained things in a way that felt too dumbed-down, condescending, or reductionist and other times concepts were explained too complexly and I felt frustrated to still be confused by a concept packaged in a witty story with an illustration.
I did like the quirky writing, creative stories, cartoon illustrations, and footnotes that felt more like the author's running commentary on his writing. The book felt like a mathy friend sitting down with you over coffee trying to get you to understand the computer programming work they do. It was interesting, but not particularly applicable. I learned things and don't regret reading it, but I'm not super sure who the book is for. I have a hard time believing people who already understand computer science have much to glean from this, but also someone, like me, who is intrigued by these concepts, but utterly clueless remains lost. My best guess is that computer scientists with middle school aged children would enjoy reading this with their family to give them a window into their world.
(from memory) The book designers let the author down on this one. A positive primer on algorithms, made more relatable by framing within a playful goal of improving the time and cost to accomplish everyday activities. But, a deeper understanding is let down in part by poor graphics. The same rough, vague plot is used to illustrate the time required under each set of methods examined in every chapter. This plot is only relabeled as you progress through the chapters, but remains otherwise unchanged. As the ideas become more complex, however, the graphics' suitability for a visual comprehension of the concepts falls off, and was never of much use to begin with. Perhaps the content of the book failed even to educate the book design team on how best to craft a visual interpretation? Oof! In any case, too bad. This is a poor book, but I think its author does write clearly and could be redeemed.
My mistake was probably that I expected the book to go along the lines of "Algorithms to live by", which is one of the most interesting books I've ever read. However, "Bad Choices" has a different objective, trying to explain algorithmic basics to the total beginner (which I'm not) using examples and the occasional picture.
Since I'm not really the target audience, I find it hard to guess whether the author succeeds in explaining algorithmic techniques to "civilians". My gut feeling is that especially the second part of the book might be too ambitious for the novice reader.
For me, the takeaway was some nice examples that I can use when teaching algorithms. Which - combined with the fact that the book is not trying to get up to the usual 250 pages that seem to be standard for nonfiction books these days - made it a nice read at the breakfast table.
This is a pleasant and witty book. It does a great job of showing how interesting computer science can be, especially to someone like me who doesn’t know much about it. It was especially interesting to me to learn how some of my daily life routines and hacks -that I didn't think much of- could be simplified, conceptualized, and then scaled to make something like computers work. I'm definitely much more motivated to go and learn about algorithms and programming languages now, they feel more attainable after reading the book. I do agree with other reviewers that the book's cover and subtitle don't do it justice and might push the right audience away, still I Loved it and it earned five stars for me.
It looks like it has potential, but it fails with bad graphs, and overly simplistic gloss overs of massive sections. The first few chapters are ok, but the book gets worse as it goes on. In the graphs, you can not really tell the difference between linear, quadratic, logarithmic functions, and those are significantly different. You have merely a passing sentence on something like Dijkstra's algorithm, and each section gets progressively more truncated, trying to fit more and more numerous complex ideas into less and and less space.
If you do not already have a background in computer science and mathematics, much of the book will be wasted: not enough information to inform, bad graphs which misinform, not enough explanation.
I've read the author's previous book, Bad Arguments, and enjoyed it, so I thought I'd try this one as well. While I cannot fault it for being an introductory text - as with Bad Arguments, I didn't learn anything I hadn't already known, but rather found them both to be nice reviews/overviews of their respective subjects - I did feel some of the wit was "forced," some of his allusions I did not understand at all (Murakami on pg 117, Sod's law on pg 100), and a few I found to be in poor taste (misinterpreting Tyndale's martyrdom on pg 73, equating tech industry with Jesus-as-saviour on pg 107), to the point that I don't believe I will read another of his books, as the time lost in doing so outweighs the benefit.
starts out slow enough to follow, but dives off the deep end on computer theory more often as it goes along. he takes simple things in everyday life, like sorting socks, or getting out of a maze, and relates that to an algorithm. so if you had a household use involving only a few hours a week it may be no big deal to waste some time or effort. but if you have a big task, like all the people sorting socks in your town for a year, an alternate algorithm can make it much more efficient, and lots of time will be saved.
examples are fun, the character names in the examples are silly. the book is short. a chapter or two will tell you if you want more.
Easy to understand, good book to get interested and start study further about algorithms. Analogy is best used when example is chosen familiar to us but we also should be warned using it for we tend to misunderstand the gist when there are even the slight differences between the example and its idea. Finding perfect match in everyday life for analogy requires careful search. Easy to understand means easy to misunderstand. In this book analogy is for beginners and never going deep, so feel comfortable about it. Fun to read. I think more further readings or references for more understanding of algorithms is more helpful for readers of this book.
This was an interesting book, that relates data structures and algorithms with problem solving in scenarios inspired by real life, through some fun fictional stories. I kind of expected it to be more about more realistic, serious and common daily life problems, however still there were several ideas and way to look at things that can be useful for me in actual problems. I think I've already used some of those optimal approaches for solving actual problems in life. It was a bit hard to connect the ideas in a couple of places, but that is hard to do and overall it was well written, well researched and a nice read.
Ali Almossawi's introduction to algorithmic thinking (illustrated by Alejandro Giraldo) is easy to follow if you're completely new to the subject and takes you through basic algorithmic methods and fundamental concepts but some of the examples are a little patronising and the humour too strained in parts so it's really only useful to complete novices.
A quirky quick read that has a lot of great information in it. The illustrations add to the quirkiness and appeal of the book. Great writing and great information that you can use in your daily life. I recommend this book for a fun read. I received this book as a part of a Goodreads Giveaway to read for my honest review.
I enjoyed Almossawi's illustrated introduction to computational thinking, which is freely available online. I've been thinking about non-fiction(ish) books for kids, and this one could be read by middle-schoolers, I think, and possibly spark interest in learning more. It illustrates the challenges and rewards of telling stories about computer science topics.
I liked the way this book used analogies to explain how algorithms work. It would be simple minded to say they work just like the human brain, but they can be explained easily when using daily tasks. Almossawi used easy to understand things that people do everyday to show thinking algorithmically works.
I didn't *love* this book, although it did provide some nice graphs to show my husband that I am indeed doing grocery shopping in the most efficient way by arranging my list in order of the store before I go.
This was interesting, I like the concept. Practical problem solving is a skill we all need to develop, how to adapt and improvise in different situations or simply how to look at things from another angle.
An interesting way of introducing various CS concepts. Not for anyone looking for a self-help guide. As someone who is interested in pedagogy, I enjoyed this little book. The lessons are succinct and the coverage suitable for someone taking an introductory class in the subject.
The introductions of each chapter starts with a story. A little quirky, the quirkyness increases with each chapter. To me it distracted from the content. Otherwise I quite like book, the explanations are concise and clearly explain the concept of scaling an algorithm.
It is a good fundamental book to understand sorting and transversing methods using real world problems, could be useful to get a grasp on how thinking works for optimistic solving software.
A brilliant concept but let down by the execution. Could have benefited from a little more exposition, and reinforcement of concepts through a broader range of examples. Worth a read but probably in conjunction with other books on the topic!
Bad Choices by Ali Almossawi is a educational book designed to introduce software concepts to new programmers. I will use his examples to introduce algorithms in the initial courses of the software engineering career.