Estrutura de dados
Organização de dados na memória para tornar certas operações eficientes. Escolher a estrutura certa costuma ser a diferença entre O(n) e O(log n).
Básicas: array, lista encadeada, pilha, fila, tabela hash, árvore (BST, B-tree, trie), heap, grafo. Especializadas: bloom filter, skip list, fenwick tree, segment tree, suffix array. Robert Tarjan, Don Knuth e The Art of Computer Programming são a bibliografia de referência. Modernidades: estruturas persistentes/imutáveis (Clojure, Scala), CRDTs para apps distribuídos.