Memories and data storage are a crucial component in every computer system. The design of such memories and systems is very important in order to improve their lifetime, capacity, and performance.
This class will be addressed towards the study of memories from their physics, architecture, information, coding, and systems perspectives. The focus will be given for coding and algorithms for the management of memories and data storage. We will mainly study non-volatile memories such as hard disk drives, flash memories, phase-change memories, and large storage systems based upon RAID technologies.