The present invention relates to a method of programming a multi level cell capable of storing above 1 data bit. The method includes storing first data in a first storing unit, storing second data in a second storing unit, programming a least significant bit data in accordance with the data stored in the first and second storing units, and programming a most significant bit data in accordance with the data stored in the first and second storing units following the program of the least significant bit data.