Density functional theory is a successful branch of numerical simulations of quantum systems. While the foundations are rigorously defined, the universal functional must be approximated resulting in a 'semi'-ab initio approach. The search for improved functionals has resulted in hundreds of functionals and remains an active research area. This chapter is concerned with understanding fundamental limitations of any algorithmic approach to approximating the universal functional. The results based on Hamiltonian complexity presented here are largely based on [20]. In this chapter, we explain the computational complexity of DFT and any other approach to solving electronic structure Hamiltonians. The proof relies on perturbative gadgets widely used in Hamiltonian complexity and we provide an introduction to these techniques using the Schrieffer-Wolff method. Since the difficulty of this problem has been well appreciated before this formalization, practitioners have turned to a host approximate Hamiltonians. By extending the results of [20], we show in DFT, although the introduction of an approximate potential leads to a noninteracting Hamiltonian, it remains, in the worst case, an NP-complete problem.