Next book (and tutorial topic): Data Structures and Algorithms

Ok - I think I am 99% close to pulling the trigger on my next collection of tutorials and book:

My plan is to target both people who want to learn more deeply about solving various computer problems using fundamental CS concepts as well as those cramming for interviews. Should be an interesting balance :scream:

I will share a potential TOC with all of you and gather feedback along the way!

:grinning:

6 Likes

Sounds interesting!

1 Like

And…trigger pulled! :slight_smile: The plan is to have this done by June 2023. I’m still going back and forth on the TOC, but here is the tentative list:

  1. What makes this worth learning? (aka Why should you care?)
  2. Data Structures
    1. Arrays
    2. Hash Tables
    3. Set
    4. Linked Lists
    5. Stacks
    6. Queues
    7. Trees (Advanced - may skip)
      1. Binary
      2. Red-Black
      3. AVL
    8. Graphs:
      1. Directed
      2. Undirected
    9. Heaps
    10. Tries
  3. Algorithms
    1. Recursion
    2. Memoization
    3. Performance: Speed and Memory Considerations
    4. Searches
      1. Linear Search
      2. Binary Search
      3. Depth-First Search
      4. Breadth-First Search
    5. Sorts
      1. Selection
      2. Insertion
      3. Merge
      4. Bubble
      5. Quick
      6. Counting
      7. Radix
      8. Shell
    6. Shortest Distance (Djikstra) (Advanced - may skip)
    7. A* (Greedy) (Advanced - may skip)
  4. Popular Examples
    1. Towers of Hanoi
    2. Monty Hall Problem
    3. Square Matrix Rotation
    4. Caesar’s Cipher
    5. Rail Fence Cipher
    6. Hamming Distance
    7. Fisher-Yates Shuffle
    8. Best Time to Buy and Sell Stock
2 Likes

If you all have thoughts on topics that I should cover, shouldn’t cover, or any other feedback, let me know! :stuck_out_tongue:

I did my computer science degree 26 years ago. I think I heard about kirupa.com some 20 years ago the first time. Regardless, I am eager to check DS, like a fresher.

2 Likes

Looking forward to this! As a long time freelancer (mostly design and front end ui dev) – the need to know pretty much everything else (full-stack dev, linux, mysql, etc) – being able to understand some of the more advanced cs concepts would be very beneficial.

1 Like

I think this is a great idea and I’m looking forward to see the content!

2 Likes

I would buy and read with pleasure, but I don’t know English well:(

2 Likes

A lot of the same content will be available on the site and Google Translate can help here :grinning:

Eventually, an official Russian translation of the book will be available just like it has for the other books :sunglasses:

2 Likes

And….the book is done! I submitted the final chapters a few moments ago. I will be getting back on the animation tutorials bandwagon shortly after taking a bit of a breather :stuck_out_tongue:

3 Likes

The end is near! I’m just a few more weeks away from being done with my latest book :slight_smile:

1 Like

:slight_smile: should get 1 free copy lol.:slight_smile:

1 Like

You do a good job of explaining algorithms :beers:

I was recently doing a job where I have to sort/ filter an obscene amount of data and Array.sort(callback) wasn’t cutting it.

I haven’t done quickSort() in a fair while and I had to modify the function to take different arguments so I just wanted to copy/modify and then benchmark a sorting function.

I looked around but most examples weren’t simple enough so I jumped on Kirupa, copied your quickSort() and insertionSort(), mashed them together ad then benchmarked.

Your quick/insertion sort combo performed 6X faster than the built in Array.sort() in Chrome… :fire:

1 Like

That is very surprising, for Array.sort() in Chrome uses Quicksort under the covers. More accurately, it is insertion sort for collections with less than some smaller number like 24 or something, but it is Quicksort all the way after that.

Glad my version ended up being faster! :slight_smile:

1 Like

It must be the callback function.
I cant get around it because I’m sorting numbers and strings that may have upperCase. :sweat_smile:
I’m also using an array of objects and comparing props so IDK…

Its going faster now… :grinning:
I had the array size for insertionSort() set to 10.
I tried 60 like TimSort() but that was rubbish… 24 is the sweet spot…

1 Like

Yes! I am doing data science

Well, time sure flies! The new book is now out :slight_smile:

You can see more details about it here:

https://twitter.com/kirupa/status/1746714410218070122

I’m also adding videos on each topic to both my YouTube channel and my newly created Tiktok channel to see how that will change how this book is marketed! :zap:

1 Like

Anticipating this with great anticipation! As a seasoned freelancer specializing in design and front-end user interface development, I need to know pretty much everything else (full-stack dev, linux, mysql, etc.). Knowing some of the more complex ideas in computer science would be very helpful.
Thanks