Dr. Steven Swanson
Director, Non-Volatile Systems Lab

Building Software for Persistent Memory

We have been building software to support persistent memories for over a decade — long before Intel released the first commercial persistent main memory.   We began by describing and addressing the essential challenges that persistent memory software would face.  We built NOVA, the world’s fastest persistent memory file system, Orion, the most capable distributed file system for persistent memory, and Onyx, the world’s first phase change memory SSD.  Most recently, we described easy techniques to adapting existing programs to use PMEM, provided the first independent characterization of Optane persistent memory performance, and crafted simple rules for how programmers can maximize performance.

Training Researchers

My research group hosts a diverse set of students from all over the world.   They learn to frame research questions, lead research projects, design experiments, and, most important, present and describe their ideas to maximize impact.  They also write a lot of code.  They learn practical skills and gain an understanding of how the publication process works.

I’ve advised fifteen Ph.Ds and four postdocs.  Four are now faculty members (including Dr. Yiying Zhang who just join the UCSD faculty) and the rest are engineers at Google, Facebook, Microsoft, Intel, VMware, Qualcomm, NetApp, Western Digital, Micron, and other companies.  For instance, Dr. Laura Caulfield (Ph.D. 2013) is a Senior Software Developer at Microsoft where she plays a central role in Windows Azure’s SSD strategy.  You can read more about where my students end up.

Building Research Communities

Top researchers visit UC San Diego each year to attend the two research meeting we host.  In March the Non-Volatile Memories Workshop attracts nearly 200 researchers from around the world to hear about the latest research developments in solid state storage.  In summer, Persistent Programming In Real Life (PIRL) focuses on the nitty gritty of programming for PMEM in real, deployable systems.  Both meetings give my students unmatched access to industry and research leaders and have helped make UCSD a global leader in storage systems research.

Grad Students

Training researchers is my main job, and I’m always looking for new graduate students.  If you want to build cool systems (and enjoy some sun),  please apply and mention me as a potential advisor.


I often host visiting graduate students, faculty, and industry practitioners from around the world.  Please contact me if you are interested.


I typically have one post-doc opening per year.  All my previous postdocs are all professors now.  If you have a strong track record in computer systems or architecture, please contact me.


Full List


In the Spring I teach CSE176e/276e: Robotic System Design and Implementation.  In 10 weeks, students design and build a small quadcopter from scratch, including the hardware and software.  The class covers PCB design and manufacturing, the principles of quadcopter operation, sensor filtering and fusion, simple control theory, and embedded systems programming.  It’s lots of fun.

Course Webpage

In CSE42: Designing and Programming Electronic Devices, students design, build, and program simple wheeled robots while they learn basic programming in CSE11 (Introduction to Computer Science
and Object-Oriented Programming).  Working in the Envision Maker Studio,  they design the robots using a custom robot design tool, 3D design tools, and their own creativity.  Then, solder them together and program them with Arduino.

Course Webpage

I teach Modern Storage Systems for graduate students.  We cover the latest, greatest developments in storage technologies as well as the classic papers that lay the foundation for the modern era.  The course includes, a large implementation project based on cutting edge hardware that forces students wrestle with the central issues at the heart of all storage systems:  reliability, consistency, and performance.

Professor Leo Porter and I designed a new computer architecture course that covers how modern processors work and how software can exploit their latest features to maximize performance and efficiency.  The course includes a hands-on lab that requires students to optimize a machine learning library for one of Intel’s latest processors.  Getting the best performance requires understanding how pipelining, caching, core-level parallelism, and vector ISAs work together is modern CPUs and how to leverage them using profilers, compilers, and clever programming.


Steven Swanson is a professor in the Department of Computer Science and Engineering at the University of California, San Diego and the director of the Non-volatile Systems Laboratory.  His research interests include the systems, architecture, security, and reliability issues surrounding heterogeneous memory/storage systems, especially those that incorporate non-volatile, solid-state memories.  He has received an NSF CAREER Award, Google Faculty Awards,  a Facebook Faculty Award, and been a NetApp Faculty Fellow.  He is a co-founder of the Non-Volatile Memories Workshop. In previous lives, he worked on low-power co-processors for irregular applications and building scalable dataflow architectures. He received his Ph.D. from the University of Washington in 2006 and his undergraduate degree from the University of Puget Sound in 1999.

Office: EBU3B 3212 (Directions)
Phone: (858)534-1743
E-mail: swanson@cs.ucsd.edu
CV: Download PDF

Mailing Address:
Computer Science & Engineering
University of California, San Diego
9500 Gilman Drive
EBU3B 3212 MC 0404
La Jolla, CA 92093-0404