1. A method of programming a flash memory device including a plurality of memory cells, each of the plurality of memory cells storing multi-bit data, the multi-bit data representing at least one of first through fourth states, and including a most significant bit and a least significant bit, the method comprising: programming at least a first memory cell into a provisional state according to the least significant bit stored in the first memory cell; and simultaneously programming a first portion of the plurality of memory cells into one of the second through fourth states from the first state, and a second portion of the plurality of memory cells into one of the second through fourth states from the provisional state according to the most significant bit stored in each memory cell.