The process for programming a set of memory cells is improved by adapting
the programming process based on behavior of the memory cells. For
example, a set of program pulses is applied to the word line for a set of
flash memory cells. A determination is made as to which memory cells are
easier to program and which memory cells are harder to program. Bit line
voltages (or other parameters) can be adjusted based on the determination
of which memory cells are easier to program and which memory cells are
harder to program. The programming process will then continue with the
adjusted bit line voltages (or other parameters).