1. A method of programming a memory block of a non-volatile memory device operatively connected to a memory controller, the memory block defined by a plurality of word lines located between a string select line and a common source line corresponding to the string select line, the method comprising: programming a first sub-block of the memory block; determining in the non-volatile memory device when a reference word line is programmed during programming of the first sub-block; partial erasing a second sub-block of the memory block upon determining that the reference word line is programmed during programming of the first sub-block.