1. A method of programming a memory cell of a flash memory array having a plurality of word and bit lines, the method comprising: applying an initial program pulse to the memory cell; determining if the memory cell is programmed in response to the initial program pulse; and if the memory cell is not programmed, applying a series of subsequent program pulses to the memory cell, determining after each whether the memory cell is programmed, and if programming of the memory cell is verified, stopping application of further programming pulses, wherein both initial and subsequent program pulses comprise application of a first voltage to the memory cell for a first application period followed by application of a second, higher voltage to the memory cell for a second, longer, application period.