Kluwer Academic Publishers Error Correction Codes for Non-Volatile Memories