Fault Tolerance In Distributed Systems : A Coding-Theoretic Approach