1. A method for programming 2-bit lower and upper data bits into memory cells during first and second programming periods, the method comprising: supplying a first word line voltage to word lines during the first programming period and supplying a first bit line voltage to bit lines according to the lower data bit to be programmed, to program the lower data bit; reading the programmed lower data bit prior to the second programming period; and supplying a second word line voltage to the word lines during the second programming period and supplying a second bit line voltage to the bit lines according to the upper data bit to be programmed and according to the programmed lower data bit, to program the upper data bit.