Is Ruby good for data structures and algorithms?
Yes, for learning and for interviews at Rails companies: the code is as short as Python's, and blocks make traversals read like the algorithm. Two gaps are worth knowing. The standard library has no heap, priority queue, linked list or tree, so you write them; and Array#sort does not promise stability, so when equal elements must keep their order, sort by a pair: sort_by.with_index { |x, i| [x, i] }.
Which Ruby classes match which data structures?
Array is a dynamic array that serves as a stack (push, pop) and a queue (push, shift); Hash is a hash table that remembers insertion order; and Set, in the standard library, is a hash-based set. That is the list. There is no heap, priority queue, linked list, tree, trie or graph, so those you build yourself, in steps one and two.
How do I write a priority queue in Ruby?
Ruby never shipped one, so there are three honest answers: sort the array after each insert, O(n log n) per push; keep it sorted with bsearch_index and insert, O(n) per push; or write a binary heap on an Array, O(log n) for both push and pop. The third is what an interviewer is looking for, and step two has you build it.
Why does insertion order in a Ruby Hash matter for algorithms?
Because it turns some classic designs into a few lines. An LRU cache, a favorite interview problem, is a Hash in which a read deletes and reinserts the key to move it to the end, and eviction is shift, which removes the oldest entry. In most languages that takes a hash table plus a doubly linked list, the structures you build in steps one and two, so you can explain what Ruby is doing for you.
Which courses on this path are not taught in Ruby?
Three: dynamic programming and the Python interview series, taught in Python, and bit manipulation, taught in C++. They are listed after the steps, each with a link that opens it in its own language. A memo in Ruby can be a Hash with a default block, as in Hash.new { |h, n| h[n] = n < 2 ? n : h[n - 1] + h[n - 2] }, and n[i] reads bit i of an integer directly, where C++ writes (n >> i) & 1.
Do I need to know Ruby before starting this path?
Methods, blocks, arrays, hashes and classes, at least. If those are new, Coddy's Ruby course takes you there first, free, and this path picks up where it ends.