These are the slides for my special lecture series on software optimization I taught in fall 2020 at NAIST. It covers the basics of software optimization ranging from basic computing architecture, performance analysis tools, memory optimization, parallelization, roofline analysis, and more.