1. A method to encode data on single-level flash memory by use of rank modulation, the method comprising: determining a bit ranking within a group of bits based on the data to be encoded; determining a plurality of partial program parameters for a plurality of flash memory bits, wherein each partial program parameter is associated with a respective bit in the plurality of bits; determining a program vector based on the determined bit ranking and the determined plurality of partial program parameters; and encoding the data to the plurality of bits using partial programming based on the determined program vector.