Motivated by systems where the information is represented by a graph, such as neural networks, associative memories, and distributed systems, we present in this work a new class of codes, called codes over graphs. Under this paradigm, the information is stored on the edges of an undirected graph, and a code over graphs is a set of graphs. A node failure is the event where all edges in the neighborhood of the failed node have been erased. We say that a code over graphs can tolerate \rho node failures if it can correct the erased edges of any \rho failed nodes in the graph. While the construction of such codes can be easily accomplished by MDS codes, their field size has to be at least O(n^2), when n is the number of nodes in the graph. In this work we present several constructions of codes over graphs with smaller field size. In particular, we present optimal codes over graphs correcting two node failures over the binary field, when the number of nodes in the graph is a prime number. We also present a construction of codes over graphs correcting \rho node failures for all \rho over a field of size at least (n+1)/2-1, and show how to improve this construction for optimal codes when \rho=2,3.