Win a copy of Testing JavaScript Applications this week in the HTML Pages with CSS and JavaScript forum!

Jeremy Kubica

Author
+ Follow
since Sep 18, 2016
Cows and Likes
Cows
Total received
5
In last 30 days
0
Total given
0
Likes
Total received
4
Received in last 30 days
0
Total given
1
Given in last 30 days
0
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Jeremy Kubica

It is all of the above: data structures, algorithms, hardware, etc.  Moreover getting good performance for an algorithm is understanding each of these aspects and how they interact. It is the combination of these parts. You can drastically slow down a good algorithm by using the wrong data structure.  Or your data structure can be inefficient with respect to the way the hardware access data. To get the best performance you have to choose these parts to work together.
3 years ago
There were a few inspirations for this approach, including the music of They Might Be Giants and Tom Lehrer.  In particular There Are No Electrons by Kenn Amdahl was a major inspiration in terms showing of how complex technical subjects could be explained through amusing stories.  The book explains the details of electronics as though little green men are running through the wires.

As for my own writing, I started writing short stories in my high school chemistry class and giving them to other students.  They were fables that tried to explain concepts such as bonds, orbitals, etc.  The other students liked them and even requested the occasional story for specific concepts.  Years later I started writing these stories for computer science, putting them on the Computational Fairy Tales blog (http://computationaltales.blogspot.com).  Eventually I compiled these into books: Computational Fairy Tales and Best Practices of Spell Design.  The CS Detective is an evolution of this work, starting with a specific set of concepts (search algorithms) and a single overall story.
3 years ago
As for inspiring the general sense of humor, I definitely have to credit Terry Pratchett, Douglas Adams, and Ken Amdahl's There Are No Electrons.  The last one in particular was a major inspiration for how complex technical subjects could be conveyed using stories and humor.
3 years ago
No... But now I definitely need to watch that series.
3 years ago
The CS Detective is an introductory book. It is aimed at introducing algorithms (at a very high level) to people without a lot of computer science experience.  So, in that respect, I don't think this is a book for people trying to tackle serious performance issues.

That being said, I hope that it does provide an amusing and enjoyable read for serious developers as well.  While none of the algorithms might be new, the book is full of odd examples of common search algorithms that provide new ways of looking them.  For example, the main character Frank has to face a weaponized version of binary search trees. Suddenly the choice of which branch to take during a search has much more profound consequences than just poor running time.
3 years ago

Campbell Ritchie wrote:How many other CS detective books are there?



It depends on how you look at it.  This is the first CS Detective book in terms of the main characters and using the detective genre. The other two books you mentioned are part of the same world though. Like The CS Detective, they explain different computer science concepts through amusing stories.  Chronologically they occur before the events of the CS Detective and some of the minor characters, locations, etc. appear across the books.
3 years ago
I have to admit that I haven't read any of the head first books, so I can't really compare the styles with that series.

As for Knuth, Introduction to Algorithms by Leiserson, Stein, Rivest, and Cormen (the book I used in when taking intro algorithms), or any of the other really great algorithms books out there, The CS Detective is obviously meant to be a lot less formal.  Instead of trying to be another formal algorithms book, I'm hoping it will supplement them, such as: getting inexperienced people interested and excited about algorithms, providing a high level overview before someone dives into the technical material, providing novel non-computer science (and often absurd) examples for someone learning the algorithms, and providing amusing refresher examples for people with experience.
3 years ago
It actually wasn't a detective novel that served as inspiration for the tone and dialogue of the book. Believe it or not, I was inspired by the caricatures of detective stories that I saw in various kids shows, books, comics. etc. where the tone is a little over the top.
3 years ago
Sorry... I missed the more general question and only answered the age part.  The target audience is someone with little to no algorithms background who is interested in learning more about computer science. It isn't an in depth, formal text for someone familiar with a lot of algorithmic concepts--there are better technical books for that. Rather the goal is to provide some insight into the high level concepts of the algorithms and get people excited about learning more.

Of course, my hope is that the humor and stories will appeal to more advanced audiences as well.
3 years ago
The writing style and technical depth are targeted at high school and up.  However I have heard from some parents that their ten year olds enjoyed the story.

There's definitely no upper age limit on the book.  I'm hoping anyone interested in algorithms will enjoy the descriptions.
3 years ago
There is already a lot of good discussion on this thread. So I will just reiterate some of the points I have seen.

Stephan van Hulst wrote:While I've never had reason to implement a linked list or a heap in the "real world", practicing with them made it faster to recognize their use in existing software, which makes reasoning about your code and tracking down bugs much easier. I also think that while many of the things you learn from your textbooks you won't apply in practice directly, you will mix and match those concepts to create solutions to real world problems.



There's two really important points here. #1 Understanding the basic data structures and algorithms is critical to understanding (and thus correctly using) other people's code, including standard libraries. #2 A lot of interesting challenges come up where a single standard algorithm won't apply, but you have to mix components of two or more.

That being said, I have had to implement algorithms and data structures. In those cases it is almost always because I have needed to adapt them to a problem that is almost, but not quite, what you find in the textbook. For example in my graduate work, I ended up adapting spatial data structures like KD-trees and Quad-Trees to work on spherical coordinates, because I was working with astronomy data.
3 years ago
Sorry. I actually don't have a good (and sharable) story in this area.
3 years ago
BigData analytics is not a major theme of the book. The book primarily covers introductory algorithms and data structures.
3 years ago

Jeanne Boyarsky wrote:No. It's is way to easy for a Google interview. It's good for someone just getting into algorithms.



I definitely agree. This book is written for someone who doesn't know that much about algorithms yet. One of the book's main goals is to get people excited about computer science and algorithms in general.
3 years ago
I do have kids, but they are a little below the target age range for this book. Maybe in a few years they will better appreciate hard boiled ex-detectives and recursive algorithms.

That being said, the motivation for writing this book was definitely to introduce the excitement of computer science to more people, especially kids. Even after many years in computer science, I can still struggle to appreciate deeply technical descriptions of algorithms. However there is a moment when things click, when I see what problem the algorithm was trying to solve and can appreciate the thought that went into it. The goal of this book was to provide that sort of excitement upfront--to show how computer science could be applied to real world problems.
3 years ago