A type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet.

A sorting algorithm that picks an element as a pivot and partitions the given array around the picked pivot, sometimes called partition-exchange sort.

An optimization over plain recursion when we cache the results of subproblems to reduce time complexity from exponetial to polynomial.

An algorithm created by Richard M. Karp and Michael O. Rabin that uses hashing to find any one of a set of pattern strings in a text.

Big-O notation gives you a rough indication of the running time of an algorithm and the amount of memory it uses.

A hash function used in Rabin–Karp's string search algorithm.