In this course, we study the complexity of fundamental algorithmic problems whose inputs are high-dimensional sets or distributions. Of particular interest are algorithms whose dependence on the dimension of the input grows only polynomially. The course will interleave mathematical structure/techniques with algorithms, and should be appropriate for students doing research in related areas or seeking to understand tools for high-dimensional computation.