6. The method of claim 1 , further comprising: computing a first matrix multiplication of the first data and a matrix to generate a third check code; computing a first matrix multiplication of the second data and the matrix to generate a fourth check code; generating an inversion pattern based on a second matrix multiplication of an initial data comprising erased states and the matrix; selectively inverting bits of the third check code based on the inversion pattern to generate the first check code, wherein the inversion pattern comprises a plurality of bits having a first state or a second state, wherein selectively inverting comprises inverting bits of the first check code corresponding to bit positions of the inversion pattern having the first state and not inverting bit positions corresponding to the second state; and selectively inverting bits of the fourth check code based on the inversion pattern to generate the second check code.
1. A method of generating coherent check words for programming memory cells to an intermediate state and to a final state without an intervening erase operation, the method comprising: receiving a first data; computing a first check code for the first data; programming the first data and the first check code to a plurality of memory cells to change contents of the plurality of memory cells from an initial state to the intermediate state; receiving a second data; computing a second check code for the second data; and programming the second data and the second check code to the plurality of memory cells without erasing the plurality of memory cells provided that contents of the second data and the second check code would be at the final state after programming.