Topology optimization is a relatively new method for the computational design of structures that enables optimal structural design beyond traditional size and shape optimization. Specifically, topology optimization identifies where to put material and where to put holes within the design domain. This course will examine the background to topology optimization, the theory and algorithms necessary to build a topology optimization code, and the two main approaches to topology optimization. At the conclusion of the course, students will be able to program a basic topology optimization code and use a common commercial software package.