1. A method of programming a multi-level cell non-volatile memory device, the method comprising: applying a first programming pulse to a wordline of the non-volatile memory device; applying a second programming pulse to the wordline, wherein a voltage level of the second programming pulse is different from that of the first programming pulse; and applying bitline voltages to respective bitlines associated with the wordline, wherein the bitline voltages vary in accordance with a plurality of data bit values to be programmed to a plurality of memory cells associated with the word line and bitlines and in response to either the first programming pulse or the second programming pulse.