<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>book review on C'est la Z</title><link>https://cestlaz.github.io/cestlaz-old-hugo.github.io/tags/book-review/</link><description>C'est la Z (book review)</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 11 Jun 2019 07:29:30 -0400</lastBuildDate><atom:link href="https://cestlaz.github.io/cestlaz-old-hugo.github.io/tags/book-review/rss.xml" rel="self" type="application/rss"/><item><title>Grokking Algorithms</title><link>https://cestlaz.github.io/cestlaz-old-hugo.github.io/post/grokking-algorithms/</link><pubDate>Tue, 11 Jun 2019 07:29:30 -0400</pubDate><guid>https://cestlaz.github.io/cestlaz-old-hugo.github.io/post/grokking-algorithms/</guid><description>&lt;p>
Someone mentioned &lt;a href="https://www.manning.com/books/grokking-algorithms">Grokking Algorithms&lt;/a> by Aditya Y. Bhargava in one of
the CS educator Facbeook groups. It looked interesting so I thought
I&amp;#39;d give it a once over.&lt;/p>
&lt;p>
It&amp;#39;s certainly an accessible book. Text mixed with cute line drawings,
&amp;#34;hand written&amp;#34; text, diagrams and picture.s It reminded me of one of
my favorite, most accessible Calculus books &lt;a href="https://www.goodreads.com/book/show/706622.Who_Is_Fourier_a_Mathematical_Adventure">Who Was Fourier&lt;/a>.&lt;/p>
&lt;p>
Overall I enjoyed the book but I&amp;#39;m not sure what its best audience
is. If you look at the selection of topics, it&amp;#39;s a little
haphazard. It introduces Big-O notation, sescrion sort, and intro
recursion all of which are covered prior to an algorithms course. It
also introduces linked lists in what I felt was an early and arbitrary
place but then neither gave any more than a theoretical overview nor
came back to them later. On the other hand, when the author covers
QuickSort he at one point compares it to a MergeSort as if that were
covered as well. On the more advanced side, there are Hash Tables,
Dijkstra&amp;#39;s Aalgorithm, Dyanmic Programming, and a few teasers at the
end.&lt;/p>
&lt;p>
The biggest downside of the book, to me, is that some of the topics
seem to be great explanations of things as long as you already know
them. The Linked List coverage is a great example of this. The author
does a nice job relating Linked Lists to memory and how they are
theoretically implemented under the hood. That said, unless you&amp;#39;ve
already studied linked lists it probably isn&amp;#39;t enough to go
anywhere. This might be fine if you are to assume that the reader has
already taken data structures but if that&amp;#39;s the case, the linked list
section is probably superflous.&lt;/p>
&lt;p>
Another point I noted was that some of the coverage is pretty standard
but some is great. I wasn&amp;#39;t very impressed by the recursion chapter
nor the coverage of Dijkstra&amp;#39;s algorithm. They were fine but nothing
special. On the other hand, I very much liked the way Bhargava laid
out and discussed Dynamic Programming. To me, that section alone is probably
worth the book. I don&amp;#39;t think it&amp;#39;s enough for you to build a unit on
Dyanamic Programming but the author provides a great way of developing
and talking about the subject and gives some nice examples. I also
like the way it builds from Greedy Algorithms.&lt;/p>
&lt;p>
To be fair, I read a couple of Amazon Reviews of the book and one
reviewer loved the coverage of Dijkstra&amp;#39;s algorithm so there is a lot
of subjectivity here. &lt;/p>
&lt;p>
A couple of other minor points worth thinking about are math and
rigor. One of the quotes on the back of the book states:&lt;/p>
&lt;blockquote>
&lt;p>This book does the impossible: it makes math fun and easy!&lt;/p>
&lt;/blockquote>
&lt;p>
I&amp;#39;ve got to disagree with this. The book doesn&amp;#39;t take any
traditionally difficult math and magically make it trivial. Rather the
book has some examples where basic math can be used to great
effect. In one section, Bhargava talks about classifiers and
similarity scores using the Distance Formula. It&amp;#39;s somewhat similar to
what I do &lt;a href="https://cestlaz.github.io/posts/2014-01-07-rot13-gateway/">here&lt;/a>. He&amp;#39;s not making hard math easy but rather he&amp;#39;s showing
that basic math can be amazingly useful and you can do cool and
powerful things with it. Nothing wrong with that. It&amp;#39;s a great thing
to do but it&amp;#39;s not making hard math easy. The author also refers the
reader to external references for more.&lt;/p>
&lt;p>
The other point I want to mention is rigor - this is bound to come up
whenever a book tries to be accessible. While it&amp;#39;s true that the author
seems to fudge or simplify a definition here and there I didn&amp;#39;t find
any major problems and think that his choices in terms of langauge,
rigor, and fudge factor are generally appropriate.&lt;/p>
&lt;p>
So bottom line - who is this book for and should you get it?&lt;/p>
&lt;p>
This is not a standalone algorithms book. You couldn&amp;#39;t use it for a
class by that name. The book mentions that it could be useful to a
code school graduate and given the lack of consistency in what&amp;#39;s
covered in code schools that&amp;#39;s probably a good recommendation. It
gives some feel and flavor on a number of subjects, does nothing
poorly and while it omits things that might be necessary, it does many
things well.&lt;/p>
&lt;p>
To me, this is an ideal book as resource for a teacher looking to
stretch their APCS-A or APCS-AB class or possibly for an advanced
student.&lt;/p>
&lt;p>
I enjoyed the book. You probably will too.&lt;/p></description></item></channel></rss>