1. A method of programming a non-volatile memory device including a plurality of memory cells that are stacked in a vertical direction over a substrate and that are connected to n word lines, wherein n is an integer greater than or equal to 3, the method comprising: programming memory cells of second to n−1-th word lines, from among first to n-th word lines that are sequentially disposed in the vertical direction over the substrate, to a multi-level state, wherein a multi-level program operation is sequentially finished from the second to n−1-th word lines in an order in which the word lines are disposed; and programming memory cells of the first word line to a single level state after the programming memory cells of the second to n−1-th word lines to a multi-level state.