Brill-Noether theory investigates the ways in which an algebraic curve can be embedded in some projective space. I will give a survey on the most relevant results in the theory, highlighting the two major proof techniques: degeneration to singular curves on the one hand, and specialization to curves lying on K3 surfaces on the other hand. I will mention recent developments in the theory and some open questions.