Let H = (V, E) be a hypergraph. A conflict-free coloring of H is an assignment of colors to V such that in each hyperedge e E there is at least one uniquely-colored vertex. This notion is an extension of the classical graph coloring. Such colorings arise in the context of frequency assignment to cellular antennae, in battery consumption aspects of sensor networks, in RFID protocols and several other fields, and has been the focus of many recent research papers. In this paper, we survey this notion and its combinatorial and algorithmic aspects.