In this talk, I give a comprehensive overview of the amoebot model for programmable matter, dividing algorithms and applications into three main categories: deterministic/stateful algorithms, fully stochastic algorithms, and applications to swarm robotics.