The memory hierarchy; practical instances; caches; virtual memory and paging; program analysis for memory effects; data access patterns and memory optimization; better software through understanding; writing memory efficient code; benchmarking and measuring; new architectures and advances.