Coding Approaches to Fault Tolerance in Combinational and Dynamic Systems