EE 309B: Emerging Non-Volatile Memory Devices and Circuit Design — Stanford Root