1. A method of programming a non-volatile memory cell array, comprising; lowering an initial threshold voltage of a charge storage layer of a selected memory cell by applying a hole injection voltage to a word line of the selected memory cell and grounding bit lines of the selected memory cell; injecting electrons into the charge storage layer by applying channel electron injection biasing voltages to the word line and the bit lines of the selected memory cell; preventing current leakage by applying a plurality of off voltages to a plurality of word lines of non-selected memory cells; and floating a plurality of bit lines of the non-selected memory cells.