This research shows optimization approaches to protein folding. The protein folding problem is to predict the compact three dimensional structure of a protein based on its amino acid sequence. This research focuses on ab-initio mathematical models to find provably optimal solutions to the 2D HP-lattice protein folding model.We built two integer programming (IP) models and five constraint programming (CP) models. All the models give provably optimal solutions. We also developed some CP techniques to solve the problemfaster and then compared their computational times. We tested the models with several protein instances. My models, while they are probably too slow to use in practice, are significantly faster than the alternatives, and thus are mathematically relevant. We also provided reasons why protein folding is hard using complexity analysis.This research will contribute to showing whether CP can be an alternative to or a complement of IP in the future. Moreover, figuring out techniques combining CP and IP is a prominent research issue and our work will contribute to that literature. It also shows which IP/CP strategies can speed up the running time for this type of problem. Finally, it shows why a mathematical approach to protein folding is especially hard not only mathematically, i.e. NP-hard, but also practically.