After "A Mathematical theory of communication" by C. E. Shannon, the 'Coding Theory' has begun its tremendous development as interface between Engineering, Computer Science and Mathematics. Contributions by mathematicians have focused on the design of new codes and the study of their properties, while contributions by engineers have focused on efficient implementations of encoding/decoding schemes. The research activities in Coding Theory have produced a vast range of different codes (with usually several alternative encoding/decoding algorithms), and their availability has pushed for new applications. Nowadays it is hard to find an electronic device which does not use codes: for example, we listen to music via heavily encoded audio CD's and we watch movies via encoded DVD's. There is at least one area where the use of encoding/decoding is not so developed, yet: Flash non-volatile memories. Flash memory high-density, low power, cost effectiveness, and scalable design make it an ideal choice to fuel the explosion of multimedia products, like USB keys, MP3 players, digital cameras and solid-state disk.
In ECC for Non-Volatile Memories the authors expose the basics of coding theory needed to understand the application to memories, as well as the relevant design topics, with reference to both NOR and NAND Flash architectures. A collection of software routines is also included for better understanding.
The authors form a research group (now at Qimonda) which is the typical example of a fruitful collaboration between mathematicians and engineers.